Ruby on rails 3.2 Rails url_uu用于嵌套资源和命名空间中,url_u是否用于生成错误的url?

Ruby on rails 3.2 Rails url_uu用于嵌套资源和命名空间中,url_u是否用于生成错误的url?,ruby-on-rails-3.2,namespaces,Ruby On Rails 3.2,Namespaces,让我们假设以下具有名称空间的嵌套资源(我强制使用TLA[三字母缩写]作为子项目/子应用程序的名称空间) 所以我在routes.rb中有这个: namespace :ldc do resources :pubowners do resources :pubs resources :companies end resources :pubs, except: :new end 模型如下所示: class Ldc::

让我们假设以下具有名称空间的嵌套资源(我强制使用TLA[三字母缩写]作为子项目/子应用程序的名称空间)

所以我在
routes.rb中有这个:

  namespace :ldc do
      resources :pubowners do
          resources :pubs
          resources :companies
      end
      resources :pubs, except: :new
  end
模型如下所示:

class Ldc::Pubs < ActiveRecord::Base
class Ldc::Pubowners < ActiveRecord::Base
我觉得这很恶心

深入研究后,我发现,
url\u for
或更好的
build\u named\u route\u call
在polymorphic\u routes.rb中忽略(或不忽略)输入的第二个元素的名称空间,即相同名称空间被添加两次(或更多)。下面是一些例子:

link_to @pub -> /ldc/pub/1
link_to @pubowner -> /ldc/pubowner/17
link_to [@pubowner,@pub]  -> /ldc/pubowner/17/ldc/pub/1    < wrong should be ../17/pub/1
最后一个正确的if routes.rb如下所示

  namespace :ldc do
      resources :pubowners do
          namespace :ldc do
             resources :pubs
             resources :companies
          end
      end
      resources :pubs, except: :new
  end
因此,我的结论是,
url\u for
或更好的
build\u-named\u-route\u-call
生成的url在具有命名空间和嵌套资源时不存在

这-我的假设-正确吗

link_to [@pubowner,@pub] -> error no route for "ldc_pubowner_ldc_pub_url" 
  namespace :ldc do
      resources :pubowners do
          namespace :ldc do
             resources :pubs
             resources :companies
          end
      end
      resources :pubs, except: :new
  end