在Rails中更改scaffold-controller-generator-templates

当我使用Rails脚手架生成器创建我的Rails文件时,它会创建一个控制器文件。 例如

rails generate scaffold potato

产生:

app/controllers/potatos_controller.rb

对于我的项目,我希望这个文件更具体一点。 例如,我想更改此自动生成的操作:

 def create @potato = Potato.new(potato_params) respond_to do |format| if @potato.save format.html { redirect_to @potato, notice: 'Potato was successfully created.' } format.json { render :show, status: :created, location: @potato } else format.html { render :new } format.json { render json: @potato.errors, status: :unprocessable_entity } end end end 

使用I18n翻译而不是硬编码‘马铃薯已成功创建’。 另外我想改变一些缩进,因为rubocop总是抱怨它。

我找到了脚手架 – 发电机的模板,现在想要进行更改。 为此,我在我的项目中创建了一个文件: lib/templates/rails/scaffold_controller/templates/controller.rb在这个文件中,我做了我的更改。 (例如我改变了界限

 redirect_to @, notice:  

 redirect_to @, notice:  

但不幸的是,这些变化无效。 脚手架生成器仍然使用自己的模板。 那么我在这里做错了什么? 我错过了一步吗?

更新:这是generate-command的输出:

 rails generate scaffold potato Running via Spring preloader in process 31479 invoke active_record ... invoke scaffold_controller create app/controllers/potatos_controller.rb ... 

铁路的屏幕截图:

Railtiesenter图像描述在这里

Rails 4显示了正在使用的模板

 rails generate scaffold potato ... invoke scaffold_controller 

您应该在项目中托管修改后的模板,即
lib/templates/rails/scaffold_controller/controller.rb

请注意,Responders gem可能会更改用于的生成器
lib/templates/rails/responders_controller/controller.rb

如果有人发现它有用,您可以通过在项目目录中运行此命令将默认的railties控制器脚手架模板复制到您自己的项目:

 mkdir -p lib/templates/rails/scaffold_controller && \ cp $(bundle show railties)/lib/rails/generators/rails/scaffold_controller/templates/* lib/templates/rails/scaffold_controller