Gar*_*hey 5 routes ruby-on-rails
现在一直在盯着这个问题.这是我在尝试查看页面时遇到的错误.
No route matches {:action=>"confirm", :controller=>"locations"}
Run Code Online (Sandbox Code Playgroud)
这就是我在视图中所拥有的.
<%= form_for(@location, :url => { :action => :confirm }) do |f| %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我认为我的路线文件设置正确.
Finder::Application.routes.draw do
resources :locations do
member do
post :confirm
end
end
root :to => 'locations/index'
end
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新:
跑rake路线,得到我认为正确的.
confirm_location POST /locations/:id/confirm(.:format) {:action=>"confirm", :controller=>"locations"}
Run Code Online (Sandbox Code Playgroud)
您可以通过运行$ rake routes
并查看输出来轻松调试路径.;)
我认为发生的事情是你post :confirm
没有注册你期望的路线.在指南中,match
它的兄弟们接受一个字符串作为URL段,如下所示:
resources :locations do
member do
post 'confirm'
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,"confirm"现在是一个字符串而不是符号.
如果这没有帮助,请运行$ rake routes
并将输出添加到您的问题中.
更新
看到你的rake输出后,我认为你只需要在你的上面指定POST方法form_for
:
<%= form_for(@location, :url => { :action => :confirm }, :method => :post) do |f| %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
您还可以使用Rails定义的辅助方法使其更具可读性:
<%= form_for(@location, :url => confirm_location_path(@location), :method => :post) do |f| %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5635 次 |
最近记录: |