2016-12-14 97 views
0

我正在学习RoR,我目前正试图在我的网站上实施一个投票系统。用户可以在论坛上登录和发表评论,然后在该论坛上提出其他意见。在节目如何使用链接/按钮更改列属性 - Ruby on Rails

<%= link_to 'Up Vote', comment_upvote_path(comment.id), method: :put %> 

控制器代码

def upvote 
    @comment = Comment.find(params[:comment]) 
    @comment.update_attribute('upVote', @comment.upvote + 1) 
    redirect_to :back 
end 

链接我试图无济于事评论代(comment.id)。

路线

get 'upvote', :to=>'comments#upvote' 

resources :comments do 
put :upvote 
end 

当我点击给予好评,我遇到了错误发生的情况:

无法找到与 'ID' 注释=

应用程序/控制器/ comments_controller.rb:26:'upvote' 请求

参数:

{ “_method”=> “放”, “authenticity_token”=> “HNXyufzGsXi/SZoJsa + 2uouMKVYlH6vYTHOF8iMgj6zAHO13jApk + QO33xEonkcoFgMugwYQZpSom1 + KbVRe7g ==”, “COMMENT_ID”=> “11”}

我检查和有11个ID的评论存在,所以我真的不知道是什么导致了这个错误。任何帮助将非常感谢!

回答

0

通过对事物的外表,:comment应该是:comment_id像这样。

@comment = Comment.find(params[:comment_id]) 
+0

是啊非常感谢你,都不敢相信,我没有看到这一点。我现在得到了:未定义的方法'+'为零:NilClass。所以我认为我应该使用某种增量方法rails对我来说已经有了。 –

+0

@EduardoTafner:那将是因为你从0开始,默认为'nil:NilClass'。你可以使用@ comment.increment('upVote')'增加1。 –