我有一个应用程序,允许用户点赞。当有人点赞时,请求可以正常工作,但是视图不会更新,除非我刷新页面。我卡在这个问题上了。这是我目前的代码:
控制器
Javascript
$('.favorite').on('click', function() {
var $heart = $(this).find('.fa');
$heart.removeClass('fa-heart-o').addClass('fa-heart');
// POST request to server to create favorite in db
$.post('/favorites', {
favorite: { post_id: $(this).attr('data-id') }
},
function(data) {
console.log(data);
});
});
控制器
def create
post = Post.find_by_id(favorite_params[:post_id])
if current_user.favorite_posts.include? post
render json: {}, status: :bad_request
else
@favorite = current_user.favorites.new(favorite_params)
if @favorite.save
render json: @favorite
else
render json: { errors: @favorite.errors.full_messages }, status: :unprocessable_entity
end
end
结束
这是视图
<% if current_user.favorite_posts.include? post %>
<span class="fa fa-heart"> <%= post.favorites.count %></span>
<% else %>
<span class="fa fa-heart-o"> <%= post.favorites.count %></span>
<% end %>
非常感谢您的帮助。
谢谢!
create
函数中不仅需要传递post_id
,还需要传递favorite_params
。您是如何获取favorite_params
的?请展示您完整的控制器。谢谢。 - akbarbin