【发布时间】:2015-09-25 08:17:46
【问题描述】:
我有一个应用程序可以让用户喜欢帖子。当有人喜欢该帖子时,该帖子请求有效,但除非我刷新页面,否则视图不会更新。我坚持这个。这是我目前所拥有的:
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 %>
感谢任何帮助。谢谢。
【问题讨论】:
-
更新视图的代码在哪里?
-
似乎没有要创建的收藏夹。当我阅读您的代码时,您还需要在 def
create中发送 favourite_params,而不仅仅是 post_id。你是怎么得到 favourite_params 的?请出示您的完整控制器。谢谢
标签: jquery ajax ruby-on-rails-4