我已经为Rails3中的一个控制器创建了一个生成器,现在我想在使用scaffolding生成器时使用这个生成器作为默认生成器。
这有可能吗?
发布于 2011-04-29 22:22:08
自定义控制器文件的正确位置是lib/templates/rails/scaffold_controller/controller.rb
发布于 2013-02-13 18:24:28
如果您只是想使用自己的控制器模板,只需将其放在lib/templates/rails/scaffold_controller/controller.rb中即可
例如,如果您想要替换scaffold_controller_generator代码本身,以便控制器scaffold生成额外的类文件。您可以在lib/generators/rails/my_scaffold_controller/templates下使用模板创建lib/generators/rails/my_scaffold_controller/my_scaffold_controller_generator.rb。
记住在config/application.rb中将rails指向新的scaffold_controller
config.generators do |g|
g.scaffold_controller = "my_scaffold_controller"
end对于my_scaffold_controller_generator.rb,如果你想修改默认行为,你可以从railties-3.x.x/lib/rails/generators/rails/scaffold_controller下的railties gem复制;如果你只是想添加功能,你可以从它继承:
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
module Rails
module Generators
class MyScaffoldControllerGenerator < ScaffoldControllerGenerator
source_root File.expand_path("../templates", __FILE__)
def new_funtionality
end
end
end
end发布于 2011-01-08 09:28:13
您可以覆盖Rails用于其生成器的模板。在本例中,只需将文件放在lib/templates/scaffold_controller/controller.rb中并按您的意愿修改它即可。下次运行rails g scaffold [modelName]时,它将选取这个新的控制器模板并使用它。
这在Section 6 of the Creating and Customizing Rails Generators官方指南中有介绍。
https://stackoverflow.com/questions/4630911
复制相似问题