ruby-on-rails 在Rails中更改scaffold-controller-generator-template

5ssjco0h  于 2022-11-19  发布在  Ruby
关注(0)|答案(4)|浏览(158)

当我使用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
  ...

铁路网截图:

7vux5j2d

7vux5j2d1#

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

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

如果您使用Rails 5.2和jbuilder,则应该使用jbuilder scaffolders作为基础:

mkdir -p lib/templates/rails/scaffold_controller && \
  cp $(bundle info jbuilder --path)/lib/generators/rails/templates/* \
  lib/templates/rails/scaffold_controller
nmpmafwu

nmpmafwu2#

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 .

pgky5nke

pgky5nke3#

要复制的模板是here,您必须根据Tim的答案将其放置在lib/templates/rails/scaffold_controller/中。

ldxq2e6h

ldxq2e6h4#

使用rake app:templates:copy来生成scaffold_controller。但是,它还生成助手、控制器、邮件程序视图、控制器视图、助手和scaffold_controller视图。
在rails github上,此命令位于here中,它不仅适用于rails 7,还适用于rails 6、rails 5和rails 4

相关问题