2014-06-20 62 views
0

我使用的轨道2.3.18和Ruby 1.8.7Rails的路线不正确评估

我在我看来,有这样的:

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 

当我点击链接时,由于被路由到不同的控制器操作(特别是'inventory_item')而导致错误。我看着rails路由调试,并找到一种方法来检查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

'2.3.18和Ruby 1.8.7'耶稣! – phoet

+0

为什么你使用这样一个过时的rails版本? –

+0

工作。我们正在转向。 – warder57

回答

0

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

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

其中

params[:id] = "download_exported_inventory_items"