如何使用链接/按钮更改列属性 - Ruby on Rails
Posted
技术标签:
【中文标题】如何使用链接/按钮更改列属性 - Ruby on Rails【英文标题】:How to change a column attribute with a link/button - Ruby on Rails 【发布时间】:2016-12-14 01:50:38 【问题描述】:我正在学习 RoR,我目前正在尝试在我的网站中实施一个投票系统。用户可以登录并在论坛上发布 cmets,然后在该论坛上为其他 cmets 投票。
控制器代码
def upvote
@comment = Comment.find(params[:comment])
@comment.update_attribute('upVote', @comment.upvote + 1)
redirect_to :back
end
节目中的链接
<%= link_to 'Up Vote', comment_upvote_path(comment.id), method: :put %>
我尝试用评论替换 (comment.id) 无济于事。
路线
get 'upvote', :to=>'comments#upvote'
resources :comments do
put :upvote
end
点击投票时出现的错误:
找不到带有 'id'= 的评论
app/controllers/cmets_controller.rb:26:in `upvote' 请求
参数:
"_method"=>"放", "authenticity_token"=>"HNXyufzGsXi/SZoJsa+2uouMKVYlH6vYTHOF8iMgj6zAHO13jApk+QO33xEonkcoFgMugwYQZpSom1+KbVRe7g==", "comment_id"=>"11"
我查了一下,有一条 id 为 11 的评论存在,所以我真的不知道是什么导致了这个错误。任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:从表面上看,:comment
应该是 :comment_id
就像这样。
@comment = Comment.find(params[:comment_id])
【讨论】:
啊,是的,非常感谢,不敢相信我没有看到。我现在得到: nil:NilClass 的未定义方法“+”。所以我认为我应该使用 rails 已经为我准备的某种增量方法。 @EduardoTafner:那是因为你从 0 开始,默认为nil:NilClass
。您可以使用@comment.increment('upVote')
递增 1。【参考方案2】:
put :upvote
应该是
put :upvote, on: :member
【讨论】:
以上是关于如何使用链接/按钮更改列属性 - Ruby on Rails的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails:如何使用迁移向现有列添加非空约束?