我使用的是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"}
有关我的路线如何混淆这样的想法,或者我可以做些什么来进一步调试问题?
提前致谢。
答案 0 :(得分:0)
由于设置了params [:id]的方式,有一条匹配的早期路线。
map.inventory_item 'vendors/inventory/:id', :controller => :inventory_data, :action => "inventory_item"
,其中
params[:id] = "download_exported_inventory_items"