Rails路由评估不正确

时间:2014-06-20 20:46:27

标签: ruby-on-rails ruby debugging routing

我使用的是rails 2.3.18和Ruby 1.8.7

我认为这是:

link_to 'Download file', {:controller => 'inventory_data', :action => 'download_exported_inventory_items', :reference_id => 'somehashvalue'}

这将输出以下链接:

<a href="/vendors/inventory/download_exported_inventory_items?reference_id=somehashvalue">Download file</a>

我在routes.rb

中指定了此路线
map.resources :inventory_data, :path_prefix => "vendors" do |vendor|
    map.download_exported_inventory_items 'vendors/inventory/download_exported_inventory_items', :controller => :inventory_data, :action => "download_exported_inventory_items"
end

当我点击链接时,由于路由到其他控制器操作(特别是&#39; inventory_item&#39;)而导致错误。我查看了rails route调试,发现了一种检查URL映射到哪个控制器操作的方法。我把它放在控制台中:

r = ActionController::Routing::Routes
r.recognize_path "/vendors/inventory/download_exported_inventory_items"

返回以下内容:

=> {:controller=>"inventory_data", :id=>"download_exported_inventory_items", :action=>"inventory_item"}

有关我的路线如何混淆这样的想法,或者我可以做些什么来进一步调试问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于设置了params [:id]的方式,有一条匹配的早期路线。

map.inventory_item 'vendors/inventory/:id', :controller => :inventory_data, :action => "inventory_item"

,其中

params[:id] = "download_exported_inventory_items"