【问题标题】:Rails 3 namespace routingRails 3 命名空间路由
【发布时间】:2011-03-18 10:49:33
【问题描述】:


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

模块 Admin::CompaniesHelper 结尾

routes.rb 中的命名空间:

命名空间 :admin 做 根 :to => "companies#index" 资源:公司 结尾

当我转到 localhost:3000/admin 时,我收到此错误:

#:0xb696b408 的未定义方法“company_path”>

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      像这样:

      admin_company_path(@company)
      

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我用rails g scaffold Admin::Grommets 生成了一个虚拟对象,然后将脚手架与我手动移动到管理员中的文件进行了比较。
        猜你喜欢
        • 2011-10-10
        • 2011-05-12
        • 2012-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 2011-08-29
        相关资源
        最近更新 更多