【发布时间】:2016-07-01 09:54:16
【问题描述】:
我收到以下错误
没有路线匹配 {:action=>"index", :controller=>"module/admin/orders"}
当使用以下内容时:
<%= form_tag({ :action => :index}, { :method => "get" }) do %>
我的路线有这个路径:
admin_orders GET /new/admin/orders(.:format) module/admin/orders#index
我尝试在rails console 中运行此代码,它可以正常运行:
r.url_for :controller => 'module/admin/orders', :action=> :index, :id=>42
=> "http://domain.com/new/admin/orders?id=42"
r.url_for :controller => 'module/admin/orders', :action=> :index
=> "http://domain.com/new/admin/orders"
我的应用程序正在使用Spree,并且这个控制器继承了Spree::Admin::ResourceController 类
【问题讨论】:
-
url_for将返回格式化的 URL,而与方法无关。您提供的form_tag明确使用get,因此这就是要搜索的路线。您是否验证过您的路线具有get(不是post)语义?您也可以附上rake routes的相关部分。 -
我确定这条路径具有“获取”语义。部分 rake 路由附在上面,代码在控制台中工作
-
我认为这是因为 Rails 试图以某种方式在 spree 引擎中找到这条路线
-
试试
<%= form_tag admin_orders_path, method: 'get' do %> -
试试
<%= form_tag({ :controller => "orders", :action => :index}, { :method => "get" }) do %>
标签: ruby-on-rails