Rails 3命名空间路由

时间:2011-03-18 10:49:34

标签: ruby-on-rails-3 routing namespaces


我有一个管理命名空间和一个放在admin命名空间之外的公司支架。 我想把这些公司放到admin命名空间中 然后我将companies_controller放入admin目录并将定义更改为 class Admin::CompaniesController < Admin::AdminController 并将公司视图放入/ app / views /中的admin目录 并将companies_helper放入管理目录,现在看起来如下:

module Admin::CompaniesHelper
end

routes.rb中的命名空间:

  namespace :admin do
    root :to => "companies#index"
    resources :companies
  end

当我去localhost:3000 / admin时出现此错误:

undefined method `company_path' for #:0xb696b408>

现在请告诉我如何编辑链接以使链接正常工作?

3 个答案:

答案 0 :(得分:4)

当您将控制器移动到admin命名空间时,您将路由更改为在scaffolded模板中创建的链接。例如,如果您的模板使用company_path,则链接将更改为admin_company_path。

要在任何给定时间点查看应用程序中的路由,请从rails应用程序根目录中的命令行运行“rake routes”。这将显示您应用程序中的所有路径

答案 1 :(得分:2)

由于公司位于命名空间管理员之下,因此您必须在路径前加上admin。

像这样:

admin_company_path(@company)

有关Rails路由和命名空间的更多信息,请参阅此Rails guide

答案 2 :(得分:0)

我得到了那种丑陋的解决方案,但它确实有效。我生成了一个新的脚手架但不同: rails generate scaffold Admin::Companies 代替 rails generate scaffold Companies 但我仍然不明白帮助者如何为资源制作网址:(