【问题标题】:How to change a column attribute with a link/button - Ruby on Rails如何使用链接/按钮更改列属性 - 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 的评论存在,所以我真的不知道是什么导致了这个错误。任何帮助将不胜感激!

【问题讨论】:

    标签: ruby-on-rails ruby view controller


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-13
      • 2017-06-02
      • 2013-08-25
      • 2014-04-14
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多