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.请记住,我没有测试过代码,我在这个窗口中编写了代码,所以你可能需要解决一些小问题,但它应该给你一个我通常如何做的印象.视觉的东西,我会留给你.
如果有人发现任何错误,请随时编辑此帖.