Ruby on rails 在Rails中更改脚手架控制器生成器模板
当我使用Rails脚手架生成器创建Rails文件时,它会创建一个控制器文件。e、 gRuby on rails 在Rails中更改脚手架控制器生成器模板,ruby-on-rails,scaffolding,scaffold,Ruby On Rails,Scaffolding,Scaffold,当我使用Rails脚手架生成器创建Rails文件时,它会创建一个控制器文件。e、 g rails生成脚手架土豆 生成: app/controllers/potatos\u controller.rb 对于我的项目,我希望这个文件更具体一点。例如,我想更改此自动生成的操作: def create @potato = Potato.new(potato_params) respond_to do |format| if @potato.save format.html
rails生成脚手架土豆
生成:
app/controllers/potatos\u 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\u controller/templates/controller.rb
在此文件中,我已进行了更改。(例如,我换了线路
redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %>
铁轨的屏幕截图:
Rails 4向您展示了正在使用的模板
rails generate scaffold potato
...
invoke scaffold_controller
您应该在项目中托管修改后的模板,即lib/templates/rails/scaffold\u controller/controller.rb
请注意,响应者gem可能会更改用于lib/templates/rails/responders\u 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
如果使用Rails 5.2和jbuilder,则应使用jbuilder
脚手架作为基础:
mkdir -p lib/templates/rails/scaffold_controller && \
cp $(bundle show jbuilder)/lib/generators/rails/templates/* \
lib/templates/rails/scaffold_controller
谢谢你的提示。我检查了生成器的输出,它说它调用了
scaffold\u controller
——我正试图编辑的那个。(请参阅更新的问题)这很有趣。你能试着编辑一下responders\u controller
,看看会发生什么吗?我还添加了一个屏幕截图,显示我的rails生成器的目录结构不正确。似乎没有responders\u controller。我试图在我的项目中创建该文件,但对结果没有任何影响。我的,responders\u controller不好
由响应者gem定义(由Desive使用)。您应该将修改后的模板放入您的项目中,即lib/templates/rails/scaffold\u controller/controller.rb
。也可以尝试不使用spring
。如果不重新启动,它可能无法加载您的模板。您的问题是谁解决的?我尝试使用Mihai answer,但不起作用。嘿,我也遇到了同样的问题,我觉得那里有代码与生成的代码不一样。您是否找到代码生成的位置?不,我决定我不在乎。当我使用此方法时,它会按预期覆盖模板。但是,生成的代码与没有覆盖的代码不一样。我似乎是错误的模板。原始代码:当我使用此方法时,它会覆盖template与预期的一样。但是,生成的代码不同。原始生成的代码用于json和html格式的响应。复制的模板仅生成html响应的代码。我将很快更新此内容-json和html控制器模板位于jbuilder
gem中。
mkdir -p lib/templates/rails/scaffold_controller && \
cp $(bundle show railties)/lib/rails/generators/rails/scaffold_controller/templates/* \
lib/templates/rails/scaffold_controller
mkdir -p lib/templates/rails/scaffold_controller && \
cp $(bundle show jbuilder)/lib/generators/rails/templates/* \
lib/templates/rails/scaffold_controller