0

我是 Rails 新手,并试图为使用acts_as_votable gem 的问题获得支持。我收到以下错误消息,告诉我没有路线匹配:

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

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

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

和我的投票按钮:

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

谢谢您的帮助!

4

3 回答 3

1

路径名like_question_path不正确。它应该至少包含“comment”,例如“like_comment_question_path”。请咨询您$rake routes的准确名称。

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

于 2013-09-12T03:05:43.173 回答
0

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

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

另外,@Billy Chan 说了什么。

于 2013-09-12T03:07:39.257 回答
0

试试这个:

路线.rb

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

点赞按钮:

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

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

于 2013-09-12T08:43:26.220 回答