覆盖Rails脚手架发电机
rails中的scaffold生成器从位于lib/rails/generators/erb/scaffold/templates
railties路径中的lib/rails/generators/erb/scaffold/templates
以及项目中的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
(我设计的一些部分)。
好几个月后我找到了解决方案。 而不是创建一个新的生成器具有Rails 文档状态,我覆盖默认生成器,但在我的项目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
希望它可以帮到某人。
对于那些懒惰的人,这里有一个快速命令,可以将默认的railties erb模板复制到Rails中的正确位置:
mkdir -p lib/templates/erb/scaffold && \ cp $(bundle show railties)/lib/rails/generators/erb/scaffold/templates/* lib/templates/erb/scaffold