当我使用Rails scaffold生成器创建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
使用国际化翻译代替硬编码的 “Potato was successfully created.” 我还想更改一些缩进,因为rubocop总是抱怨它。
我已经找到了scaffold-generator的模板,现在想做一些修改。为此,我在我的项目中创建了一个文件:lib/templates/rails/scaffold_controller/templates/controller.rb
在这个文件中,我做了一些修改。(例如,我修改了
redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %>
至
redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} THIS IS A TEST.'" %>
但不幸的是,这些更改并不起作用。scaffold生成器仍然使用它自己的模板。那么我在这里做错了什么呢?我遗漏了一个步骤吗?
**更新:**以下是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
...
铁路网截图:
4条答案
按热度按时间7vux5j2d1#
如果有人觉得它很有用,您可以通过在项目目录中运行以下命令,将默认的railties控制器脚手架模板复制到您自己的项目中:
如果您使用Rails 5.2和jbuilder,则应该使用
jbuilder
scaffolders作为基础:nmpmafwu2#
Rails 4显示了正在使用的模板
您应该将修改后的样板放在项目中,例如
lib/templates/rails/scaffold_controller/controller.rb
.请注意,Responders gem可能会更改用于
lib/templates/rails/responders_controller/controller.rb
.pgky5nke3#
要复制的模板是here,您必须根据Tim的答案将其放置在
lib/templates/rails/scaffold_controller/
中。ldxq2e6h4#
使用
rake app:templates:copy
来生成scaffold_controller。但是,它还生成助手、控制器、邮件程序视图、控制器视图、助手和scaffold_controller视图。在rails github上,此命令位于here中,它不仅适用于rails 7,还适用于rails 6、rails 5和rails 4