覆盖Rails脚手架发电机

mar*_*ise 7 ruby-on-rails

rails中的scaffold生成器从位于lib/rails/generators/erb/scaffold/templatesrailties路径中的模板和lib/templates项目中的文件夹生成MVC层.

如果您将原始文件从railties文件夹复制到项目lib文件夹,那么您将能够自定义原始scaffold生成器,正如Daniel Fone在他的博客中解释的那样.

原始Rails生成器在视图层中使用5个文件:

  • _form.html.erb
  • edit.html.erb
  • index.html.erb
  • new.html.erb
  • show.html.erb

我想知道是否有办法通过向集合中添加另一个文件来扩展此行为.喜欢_header.html.erb_info.html.erb(我设计的一些部分).

mar*_*ise 15

好几个月后我找到了解决方案.我没有像Rails 文档中那样创建新的生成器,而是覆盖了我的projects lib文件夹中的默认生成器.

在此输入图像描述

原件scaffold_generator.rb位于~/.rvm/gems/ruby-2.1.0/gems/railties-4.2.4/lib/rails/generators/erb/scaffold.要添加新文件(_info.html.erb),我们将其添加到available_views方法中.

def available_views
    %w(index edit show new _form _info)
end
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人.


Tim*_*m K 7

对于那些懒惰的人,这是一个快速命令,可将默认的railties erb模板复制到Rails中的正确位置:

mkdir -p lib/templates/erb/scaffold && \
cp $(bundle show railties)/lib/rails/generators/erb/scaffold/templates/* lib/templates/erb/scaffold
Run Code Online (Sandbox Code Playgroud)