【问题标题】:Voting system from scratch从零开始的投票系统
【发布时间】:2015-06-05 14:23:19
【问题描述】:

我是 Rails 的新手,我想为我的应用程序做一个投票系统,用户可以在其中为我称为“Idee”的帖子投票。用户只能为帖子投票一次,并且只能对帖子进行投票。我为我的帖子定义了一个“喜欢”列,我这样做了:

控制器

def upvote
  @idee = Idee.find(params[:id])
  @idee.like += 1
  redirect_to :back, notice: "Thank you for voting!"
end

路线

get 'upvote' => "idees#upvote"

查看

<%= link_to "up", controller: "idees", action: "upvote", id: @idee %>

但是不行,当我点击“up”链接时,可以看到一句“Thank you for vote!”来自我的控制器,但没有投票。

我该怎么做才能完成这项工作?

【问题讨论】:

  • 修改like的值后需要保存@idee
  • 哦,是的,我太笨了……谢谢
  • @idee.increment!(:likes) 如果成功则返回 true。

标签: ruby-on-rails voting-system


【解决方案1】:

你应该像这样保存你的对象

def upvote
  @idee = Idee.find(params[:id])
  @idee.like += 1
  @idee.save
  redirect_to :back, notice: "Thank you for voting!"
end

【讨论】:

  • 谨慎使用这种方法,如果两个用户及时投票支持同一个 Idee,您可能会失去投票。请阅读更多关于锁定guides.rubyonrails.org/…
猜你喜欢
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
相关资源
最近更新 更多