【问题标题】:Custom Views Scaffolding in Rails EnginesRails 引擎中的自定义视图脚手架
【发布时间】:2013-05-01 12:16:30
【问题描述】:

我正在尝试从我的引擎中使用自定义脚手架。

我遵循了一些关于在普通 Rails 应用程序中自定义 Rails 3.2 脚手架的教程,并将自定义模板放在引擎 /lib/templates/erb/scaffold 目录中,但它们没有被包含引擎的应用程序。有什么建议吗?

更新: 我还尝试覆盖 Rails ScaffoldGenerator 的 source_path 并尝试了一些其他路径来放入我的模板,例如: lib/rails/generators/erb/scaffold/templates

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2 scaffolding rails-engines


    【解决方案1】:

    您说的是控制器模板吗?比你使用错误的目录。将您的模板保存在 lib/templates/rails/scaffold_controller/controller.rb

    http://xyzpub.com/en/ruby-on-rails/3.2/templates.html 为例。

    【讨论】:

    • 不,我正在寻找视图脚手架的解决方案。我更新了我的问题以更好地反映这一点。
    【解决方案2】:

    在您声明引擎的文件中使用以下命令:

    class Engine < Rails::Engine
    
      config.app_generators do |g|
        g.templates.unshift File::expand_path('../templates', __FILE__)
      end
    
    end
    

    它应该改变 Rails 默认使用的模板文件夹的偏好。

    现在只需将模板文件放在 lib/templates/erb/scaffold/template_name.erb 中

    其中 template_name 是以下之一:_form.html.erb、edit.html.erb、index.html.erb、new.html.erb、show.html.erb

    一旦你包含了 gem,你应该能够像往常一样使用 rails generate scaffold 命令。

    这是一个覆盖rails中默认脚手架的引擎示例:

    https://github.com/brocktoncg/gemboree

    这是模板目录所在的位置:

    https://github.com/brocktoncg/gemboree/tree/master/lib/templates/erb/scaffold

    【讨论】:

      【解决方案3】:

      zarazan 的回答让我了解了大部分情况,但它有一些问题。这对我有用:

      class Engine < Rails::Engine
      
        config.generators do |g|
          g.templates.unshift File::expand_path('../../templates', __FILE__)
        end
      
      end
      

      请注意,这在 generators 部分,不是 app_generators,并且路径略有不同。

      另外,我认为存储模板的正确路径是 lib/templates/erb/scaffold,可以选择用您使用的任何语言(如 haml 或 slim)替换 erb。我知道这适用于 slim。文件名是{_form,edit,index,new,show}.html.erb

      【讨论】:

        猜你喜欢
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多