添加不需要用户模型的{Like}按钮

时间:2015-08-05 23:50:57

标签: javascript ruby-on-rails ruby ajax social-media-like

我正在尝试向我的rails网站添加一个类似的按钮,所以我查看了acts_as_votable gem和Active Record Reputation System gem。但是,这两个都需要一个用户模型(我认为),我想制作一个任何人都可以点击的按钮,无论他们是否已登录。

有没有办法让其中一个宝石像这样运作,还是我必须从头开始创建投票系统?此外,如果我必须从头开始,那么接近它的一些指导将会有所帮助。

2 个答案:

答案 0 :(得分:3)

如果你想要一个非常简单的系统,任何人都可以投票给'图像',你可以在每张图像上放一个简单的计数器。

例如,假设您现在正在使用具有名为images的表的sql flavor数据库,请使用change方法进行迁移:

def change
  add_column :images, :likes, :integer, default: 0
end

然后在您的ImagesController或其他任何内容中,执行

等操作
def upvote
  image = Image.find(params[:id]) # in Rails 4, using strong params, this would look a bit different.
  image.update_attributes(likes: image.likes + 1)
  render json: image
end

我遗漏了很多东西,但是你可以从中得到这样的想法,即没有用户的推动实际上非常简单。一旦你开始试图跟踪谁喜欢什么,它就会变得复杂。

答案 1 :(得分:1)

我创建了另一个名为Like的模型,然后在one to many associationImage之间创建Like

rails g resource Like image_id:integer

然后运行

更新数据库
rake db:migrate

然后你会想要创建关联。

# like.rb
class Like < ActiveRecord::Base
  belongs_to :image
end

# image.rb
class Image < ActiveRecord::Base
   has_many :likes
end

然后当有人点击“赞”按钮时,您需要使用new Like

id创建Image

我希望这会有所帮助。