显然,视图的实际创建是通过名为copy_view_files
的函数完成的。你可以在该函数中指定你想要的视图类型。这样做之后,我scaffold_generator.rb
看起来是这样的:
要求 '导轨/发电机/ ERB /支架/ scaffold_generator'
module Erb
module Generators
class ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
source_root File.expand_path(File.join('..', 'templates'), __FILE__)
def copy_view_files
primary_views.each do |view|
filename = filename_with_extensions view
template "#{view}.html.erb", File.join('app', 'views', controller_file_path, filename)
template "#{view}.js.erb", File.join('app', 'views', controller_file_path, filename)
end
end
hook_for :form_builder, :as => :scaffold
protected
def primary_views
['index', 'edit', 'show', 'new']
end
def handler
:erb
end
end
end
end
注意,copy_view_files
函数中,有两次调用template
。第一个创建一组html视图,第二个创建我想要的js视图。
很酷的想法。你把你的覆写放在'scaffold_generator.rb'的哪里?我可以通过将它放置在'config/initializers/scaffold_generator.rb'中来定制默认生成器,但是然后'rails s'抛出了一个异常,但是当我尝试将它放入'lib/generators/ERB /支架/ scaffold_generator.rb'。 – Anson 2014-01-16 16:26:27
我在'/ lib/generators/slim/scaffold/scaffold_generator.rb'中使用了'slim'替代'erb'。不知道为什么这不适合你。 – nullnullnull 2014-01-16 18:35:18