我打算将投票系统添加到我的 Rails 应用程序中,我尝试使用 activerecord-reputation-system gem 运行 reputation-system 并遵循 railscasts #364视频。
我在路由错误中苦苦挣扎,当我点击赞成票或反对票时,它显示错误“没有路由匹配 [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_controller.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但这对我没有帮助。所以,我真的需要这方面的帮助。
最佳答案
从您收到的错误中可以看出,您正在发送 GET 请求,而 Rails 正在等待 POST 执行此操作。您需要确保使用 link_to
生成了正确的 HTML。
要实现此目的,请检查链接上的 data-method
是否为“post”。为此,您可以右键单击向上\向下投票链接,然后按检查元素。
如果它不存在,但您的 View 部分显示 method: "post"
,请尝试将其更改为 method: :post
,正如 Pardeep 在评论中建议的那样。
关于ruby-on-rails - 路由错误 - 在 rails 中使用 activerecord-reputation-system gem 时没有路由匹配 [GET] 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30978066/