我已经查询了用户帖子(显然是嵌套资源),并且有一长串来自不同用户的帖子。我希望用户能够单击每个帖子旁边的小星星,以通过ajax收藏该特定帖子。关于如何实现这一目标的任何建议?我遇到的麻烦是一页上有多个收藏夹按钮,偏爱多个帖子。
这有点像Gmail在收件箱中使用收藏的电子邮件那样。其实就是这样
首先,您需要设置数据库来处理此问题,就我个人而言,我将使用has_many:through关联,因为它比has_and_belongs_to_many具有更大的灵活性。但是,选择取决于您。我建议您在API中查找不同的类型,然后自己决定。此示例将处理has_many:through。
楷模
# user.rb (model) has_many :favorites has_many :posts, :through => :favorites # post.rb (model) has_many :favorites has_many :users, :through => :favorites # favorite.rb (model) belongs_to :user belongs_to :post
控制者
# favorites_controller.rb def create current_user.favorites.create(:post_id => params[:post_id]) render :layout => false end
路线
match "favorites/:post_id" => "favorites#create", :as => :favorite
jQuery的
$(".favorite").click(function() { var post_id = $(this).attr('id'); $.ajax({ type: "POST", url: 'favorites/' + post_id, success: function() { // change image or something } }) })
笔记
这假设了两件事:使用Rails 3,使用jQuery,每个喜欢的图标都有一个带有帖子ID的html ID。请记住,我尚未测试代码,而是在此窗口中编写的,因此您可能必须修复一些小问题,但它应该使您对 我 通常的操作方式有一个印象。视觉的东西,等等,我会留给你的。
如果有人发现任何错误,请随时编辑此帖子。