2012-03-07 106 views
0

我有一个命名空间的控制器保险这样的:命名空间嵌套控制器返回路线错误

class Modules::Insurance::InsurancesController < ApplicationController 

在roues.rb我有这样的:

namespace :modules do 
     namespace :insurance do 
      resources :insurances 
     end 
    end 

这给了我的路线:modules_insurance_insurances_path 当我创建了一个链接,但它返回错误:

No route matches {:controller=>"modules/insurance/users"} 

我在哪里犯了一个错误?

+0

你如何创建链接? – apneadiving 2012-03-07 09:54:52

+0

你的文件夹结构如何? – apneadiving 2012-03-07 10:01:10

+0

这是链接:link_to I18n.t(:nav_insurance),modules_insurance_insurances_path – John 2012-03-07 11:27:12

回答

1

解决它。 Apparantly路线错误是造成该网页上的其他链接:

link_to "users", :controller => "users", :action => "index" 

更改,要

link_to "users", users_path 

解决了这个问题。现在是一个链接:控制器和:行动不是你应该这样做的方式,但我觉得很奇怪,它会导致到“modules_insurance_insurances_path”的链接上的路径错误....

+0

当你指定''controller =>“users,:actions =>”index“'这样的参数时,Rails可能会猜测你指的是一个位于当前命名空间内的控制器(即'modules/insurance' ),因此你得到了这样的错误信息 - 注意,它是说'没有路由匹配{:controller =>“modules/insurance/users”},而不是'没有路由匹配{:controller =>“modules/insurance/insurances“}',所以显然不是由调用modules_insurance_insurances_path引起的。 – 2012-03-07 16:45:19

1

请试试这个

map.with_options :controller => 'modules/insurance/insurances' do |insurance| 
    insurance.user_home 'insurance/user', :action => 'users' 
end 
+0

给出一个错误:“未定义的局部变量或方法'地图'” – John 2012-03-07 11:29:22

+0

您正在使用哪种rails版本? – sangeethkumar 2012-03-07 12:16:40

+0

3.1是版本 – John 2012-03-07 12:27:02