我要将投票系统添加到我的rails应用程序中,并尝试使用activerecord-reputation-system gem运行声誉系统,并关注railscasts #364视频。
我正在为路由错误而苦苦挣扎,当我单击向上投票或向下投票时,它显示错误"No route matches GET "/haikus/1/vote“


/config/routes.rb:
Youhaiku::Application.routes.draw do
get 'signup', to: 'users#new', as: 'signup'
get 'login', to: 'sessions#new', as: 'login'
get 'logout', to: 'sessions#destroy', as: 'logout'
resources :users
resources :sessions
resources :haikus do
member { post :vote }
end
root to: 'haikus#index'
end/app/controllers/haikus_CONTROLER.rb:
def vote
value = params[:type] == "up" ? 1 : -1
@haiku = Haiku.find(params[:id])
@haiku.add_evaluation(:votes, value, current_user)
redirect_to :back, notice: "Thank you for voting!"
end/app/views/haikus/_haiku.html.erb:
<div class="haiku">
<%= simple_format haiku.content %>
<em>
-- <%= haiku.user.name %>
| <%= link_to "up", vote_haiku_path(haiku, type: "up"), method: "post" %>
| <%= link_to "down", vote_haiku_path(haiku, type: "down"), method: "post" %>
</em>
</div>我检查了这个issue,但这对我没有帮助。所以,我真的需要你的帮助。
发布于 2015-06-22 19:21:35
从您收到的错误中可以看出,您正在发送GET请求和Rails,等待此操作的POST。您需要确保使用link_to生成了正确的超文本标记语言。
要实现这一点,请检查链接上的data-method是否显示为"post“。为此,您可以右键单击向上\向下投票链接,然后按inspect element。
如果它不在那里,但是您的视图partial说,请尝试按照method: "post"在评论中建议的那样将其更改为method: :post。
https://stackoverflow.com/questions/30978066
复制相似问题