【问题标题】:Can generate scaffold put the controller in a namespace?可以生成脚手架将控制器放在命名空间中吗?
【发布时间】:2011-03-03 20:43:59
【问题描述】:

我想在 Rails 应用程序中生成脚手架,像往常一样生成模型,但控制器位于 admin 命名空间内。有可能吗?

【问题讨论】:

    标签: ruby-on-rails scaffold


    【解决方案1】:

    第一次做完就跑

    script/generate scaffold blog
    

    然后重构控制器、视图等。我目前首选的解决方案是:

    script/generate scaffold admin::blog
    

    然后重构模型、单元测试和迁移;工作量少了。

    如果有更好的答案,我会接受。

    【讨论】:

    • admin/blog 对我来说稍微好一点,但这只是一点点,很可能完全是主观的。
    • 在 Rails >3 rails g scaffold admin/blog
    【解决方案2】:

    你可以对 rails

    script/generate scaffold Blog title:string
    

    script/generate scaffold admin::blog title:string
    

    对于 > 3 的导轨:

    rails g scaffold Blog title:string
    

    rails g scaffold admin/blog title:string
    

    【讨论】:

      【解决方案3】:

      这个问题在 stackoverflow 上被广泛询问。我也遇到过这个问题,没有找到标准的解决方案。

      所以,我创建了 rails-admin-scaffold gem(目前仅适用于 Rails 4),它使这个过程自动化,并写了 an article 并提供了更详细的解释。希望对某人有所帮助。

      【讨论】:

      • @ArnoldRoa 我也遇到过这样的问题。如果有一个名为 Admin 的模型,那么就不可能有 Admin 命名空间——因为 rails 会用同名的模块命名它——因此,这将是一个名称冲突。
      【解决方案4】:

      对于 Rails 6:

      假设你有这样的模型:

      rails g model Foo name:string
      

      那么你可以这样做

      rails g scaffold_controller Admin/Foo name:string --model-name="Foo"
      

      (指定模型名称会阻止控制器引用模型 Admin::Foo 这将是默认值)

      注意:这并不完美;您必须在视图和测试中修复一堆路径错误 - 但它可以让您完成 80% 的工作。

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 2012-09-06
        • 1970-01-01
        • 2013-11-24
        • 2014-06-30
        • 1970-01-01
        • 2011-04-16
        • 2016-05-22
        • 2011-08-03
        相关资源
        最近更新 更多