小编典典

用户帖子的rails ajax fav按钮

ajax

我已经查询了用户帖子(显然是嵌套资源),并且有一长串来自不同用户的帖子。我希望用户能够单击每个帖子旁边的小星星,以通过ajax收藏该特定帖子。关于如何实现这一目标的任何建议?我遇到的麻烦是一页上有多个收藏夹按钮,偏爱多个帖子。

这有点像Gmail在收件箱中使用收藏的电子邮件那样。其实就是这样


阅读 237

收藏
2020-07-26

共1个答案

小编典典

首先,您需要设置数据库来处理此问题,就我个人而言,我将使用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。请记住,我尚未测试代码,而是在此窗口中编写的,因此您可能必须修复一些小问题,但它应该使您对
通常的操作方式有一个印象。视觉的东西,等等,我会留给你的。

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

2020-07-26