我是rails的新手,并试图通过使用acts_as_votable gem来解决问题。我收到以下错误告诉我没有路线匹配:
No route matches [GET] "/questions/1/like"
这是my_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按钮:
<%= link_to "Upvote", like_question_path(@comment, @question, method: :put) %>
感谢您的帮助!
答案 0 :(得分:1)
路径名like_question_path
不正确。它应至少包含“注释”,类似“like_comment_question_path”。请咨询您的$rake routes
以获取准确的姓名。
顺便问一下,您有什么理由需要使用put
吗?在我看来,这个动作不是为了改变现有数据而是添加一个新数据,所以'POST'应该更合适。
答案 1 :(得分:0)
方法选项应该在命名路径之外,如下所示:
<%= link_to "Upvote", like_question_path(@comment, @question), method: :put %>
另外,@ Billy Chan说。
答案 2 :(得分:0)
试试这个:
的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的方法将在第二个参数之后。