acts_as_votable gem routes错误

我是rails的新手,并试图通过使用acts_as_votable gem来解决问题。 我收到以下错误告诉我没有路线匹配:

No route matches [GET] "/questions/1/like" 

这是我在questions_controller.rb中的upvote方法:

 def upvote @question = Question.find params[:question_id] @question.liked_by current_user redirect_to @questions end 

我的routes.rb文件:

  resources :comments do resources :questions member do put "like", to: "questions#upvote" end end 

和我的upvote按钮:

  

谢谢您的帮助!

试试这个:

的routes.rb

 resources :comments do resources :questions do put "like", to: "questions#upvote" end end 

Upvote按钮:

 <%= link_to "Upvote", comment_question_like_path(@comment, @question), method: :put %> 

您需要正确的路径,并且使用link_to的方法将在第二个参数之后。

路径名like_question_path不正确。 它应至少包含“注释”,类似“like_comment_question_path”。 请查询您的$rake routes以获取准确的名称。

顺便问一下,你有什么理由需要使用put吗? 在我看来,此操作不是要更改现有数据,而是添加新数据,因此“POST”应该更合适。

方法选项应该在命名路由之外,如下所示:

 <%= link_to "Upvote", like_question_path(@comment, @question), method: :put %> 

另外,@ Billy Chan说。