"locations"} 这就是我-6ren">
gpt4 book ai didi

ruby-on-rails - Rails 3.0.4 中没有路由匹配

转载 作者:行者123 更新时间:2023-12-04 17:57:43 26 4
gpt4 key购买 nike

盯着这个问题已经有一段时间了。这是我尝试查看页面时遇到的错误。

No route matches {:action=>"confirm", :controller=>"locations"}

这就是我的看法。
<%= form_for(@location, :url => { :action => :confirm }) do |f| %>
<% end %>

而且我认为我的路由文件设置正确。
Finder::Application.routes.draw do
resources :locations do
member do
post :confirm
end
end

root :to => 'locations/index'
end

有任何想法吗?

更新:

跑 rake 路线并得到我认为正确的东西。
confirm_location POST   /locations/:id/confirm(.:format) {:action=>"confirm", :controller=>"locations"}

最佳答案

您可以在将来通过运行 $ rake routes 轻松调试您的路由。并查看输出。 ;)

我认为正在发生的事情是您的 post :confirm没有注册您期望的路线。在指南中,match它的兄弟们接受一个字符串作为 URL 段,如下所示:

resources :locations do
member do
post 'confirm'
end
end

请注意,“确认”现在是一个字符串而不是一个符号。

如果这没有帮助,请运行 $ rake routes并将输出添加到您的问题上。

更新

看到你的 rake 输出后,我认为你只需要在你的 form_for 上指定 POST 方法即可。 :
<%= form_for(@location, :url => { :action => :confirm }, :method => :post) do |f| %>
<% end %>

您还可以使用 Rails 定义的辅助方法使其更具可读性:
<%= form_for(@location, :url => confirm_location_path(@location), :method => :post) do |f| %>
<% end %>

关于ruby-on-rails - Rails 3.0.4 中没有路由匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com