rails ajax fav按钮用于用户帖子

Lis*_*isa 7 ruby ajax jquery ruby-on-rails ruby-on-rails-3

我查询了用户帖子(显然是嵌套资源),并且有很多来自不同用户的帖子.我希望用户能够点击每个帖子旁边的一个小星星,通过ajax收藏该特定帖子.有关如何实现这一目标的任何建议?我遇到的麻烦是在一个页面上有多个喜欢的按钮,喜欢多个帖子.

这有点像Gmail在收件箱中收藏了最喜欢的电子邮件.实际上,就是这样.

小智 10

首先,您需要设置数据库来处理这个问题,我个人会选择has_many:通过关联,因为它提供了比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
Run Code Online (Sandbox Code Playgroud)

调节器

# favorites_controller.rb
def create
  current_user.favorites.create(:post_id => params[:post_id])
  render :layout => false
end
Run Code Online (Sandbox Code Playgroud)

路线

match "favorites/:post_id" => "favorites#create", :as => :favorite
Run Code Online (Sandbox Code Playgroud)

jQuery的

$(".favorite").click(function() {
  var post_id = $(this).attr('id');
  $.ajax({
    type: "POST",
    url: 'favorites/' + post_id,
    success: function() {
      // change image or something
    }
  })
})
Run Code Online (Sandbox Code Playgroud)

笔记

这假设了几件事:使用Rails 3,使用jQuery,每个收藏夹图标都有一个带有帖子ID的html id.请记住,我没有测试过代码,我在这个窗口中编写了代码,所以你可能需要解决一些小问题,但它应该给你一个通常如何做的印象.视觉的东西,我会留给你.

如果有人发现任何错误,请随时编辑此帖.