2016-12-14 6 views
0

私はRoRを学習していますが、現在私のウェブサイトには投票システムが実装されています。ユーザーは、ログオンしてフォーラムにコメントを投稿し、そのフォーラムの他のコメントをupvoteすることができます。リンク/ボタンで列属性を変更する方法 - Ruby on Rails

コントローラー・コード

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 

私はupvoteする]をクリックしたときに、私は取得していますエラーが発生:

見つけることができませんでした '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

はいああ、私はそれを見ていないと信じてすることはできません、どうもありがとうございましであるべき。私は今、取得しています:未定義のメソッド '+ 'はnil:NilClassです。だから私は、すでに私のために持っているある種のインクリメント方法のレールを使うべきだと思う。 –

+0

@EduardoTafner:これは0から始まり、デフォルトでは 'nil:NilClass'になっているからです。 '@ comment.increment( 'upVote')'を使って1だけインクリメントすることができます。 –

関連する問題