【问题标题】:Overriding default scaffold views in rails not working覆盖rails中的默认脚手架视图不起作用
【发布时间】:2014-08-10 01:10:37
【问题描述】:

我想覆盖我的 rails 4 应用程序的默认脚手架视图。我已经从 railties 复制了所有 erb 脚手架文件,并将它们放在我的应用程序 /lib/templates/erb/scaffold 下的以下文件夹中。

我修改了 new.erb.html 文件,以便我可以判断是否使用 lib/templates erb 文件而不是默认的 railties 文件来生成视图。

运行命令后:

rails g scaffold Customer code:string name:string

并重新加载新的客户页面,它不会选择我的自定义脚手架文件来生成新的客户视图。

我还需要在应用程序中设置什么来告诉它在 lib/templates 文件夹中查找脚手架模板文件吗?

  • Rails 版本为:Rails 4.1.4
  • 操作系统版本为:Ubuntu 14.04 LTS
  • Ruby 版本为:ruby 2.1.2p95(2014-05-08 修订版 45877)[x86_64-linux]

干杯, 利。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    我遇到了同样的问题,只是无论我destroyed 或generated 我的脚手架实体多少次,我的更改都不会出现。为了解决这个问题,我将以下 defaults 添加到我的 config/application.rb 文件中(请参阅 Ruby on Rails 指南中的 Customizing Your Workflow):

    ...
    class Application < Rails::Application
    ...
      config.generators do |g|
        g.orm             :active_record
        g.template_engine :erb
        g.test_framework  :test_unit, fixture: true
      end
    end
    ...
    

    【讨论】:

      【解决方案2】:

      我会链接到您this 的帖子,其中有答案。 但简而言之,他们所说的是: 您需要将此代码添加到声明引擎的文件中。

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

      它还链接到执行您似乎想要执行的操作的示例。享受吧!

      【讨论】:

      • 谢谢@Vasseurth。你知道上面的类 Engine
      • 嗯,经过进一步调查,似乎只需将模板放在 lib/templates/erb/scaffold 中就可以了。但是看看 gemboree 的例子,他们在 lib 文件夹中有那个
      • 我找到了一个“解决方案”,但是我不完全确定为什么重新运行脚手架命令没有产生相同的结果。相反,我运行: rails destroy scaffold Customer 然后重新运行: rails g scaffold Customer code:string name:string 并且它起作用了。最大的问题是,如果我进行额外的视图模板更改,我是否需要再次执行相同的操作,或者重新运行脚手架命令工作。时间会证明...
      【解决方案3】:

      我找到了一个“解决方案”,但我不完全确定为什么重新运行脚手架命令没有产生相同的结果。相反,我运行: rails destroy scaffold Customer 然后重新运行: rails g scaffold Customer code:string name:string 并且它起作用了。最大的问题是,如果我进行额外的视图模板更改,我是否需要再次执行相同的操作,或者重新运行脚手架命令工作。时间会证明...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-11
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多