acts_as_votable gem routes错误

时间:2013-09-12 02:32:10

标签: ruby-on-rails

我是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) %>

感谢您的帮助!

3 个答案:

答案 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的方法将在第二个参数之后。