【问题标题】:Using custom scaffold templates for Rails models and controllers? (`inherited_resources_controller` vs `scaffold controller`)为 Rails 模型和控制器使用自定义脚手架模板? (`inherited_resources_controller` 与`脚手架控制器`)
【发布时间】:2020-05-16 08:49:22
【问题描述】:

在厌倦了重建所有默认脚手架模型、视图和控制器后,我决定创建自定义模板作为各种博客/SA 问题等的大纲。

我创造了:

/lib/templates/active_record/model.rb
/lib/templates/rails/scaffold_controller/controller.rb
/lib/templates/erb/scaffold/_form.html.erb.tt (and so on for the actions etc.)

我将此添加到我的config/application.rb 文件中:

config.generators do |g|
      g.orm             :active_record
      g.template_engine :erb
      g.test_framework  :test_unit, fixture: true
      g.skip_routes  true
end

然后我运行脚手架:

rails g scaffold MyModel name description notes:text flag_active:boolean slug company_id:integer
Running via Spring preloader in process 52960
      invoke  active_record
      create    db/migrate/20200130165523_create_my_models.rb
      create    app/models/my_model.rb
      invoke    test_unit
      create      test/models/my_model_test.rb
      create      test/fixtures/my_models.yml
      invoke  resource_route
       route    resources :my_models
      invoke  inherited_resources_controller
      create    app/controllers/my_models_controller.rb
      invoke    erb
      create      app/views/my_models
      create      app/views/my_models/index.html.erb
      create      app/views/my_models/edit.html.erb
      create      app/views/my_models/show.html.erb
      create      app/views/my_models/new.html.erb
      create      app/views/my_models/_form.html.erb
      invoke    test_unit
      create      test/controllers/my_models_controller_test.rb
      create      test/system/my_models_test.rb
      invoke    helper
      create      app/helpers/my_models_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/my_models/index.json.jbuilder
      create      app/views/my_models/show.json.jbuilder
      create      app/views/my_models/_my_model.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/my_models.coffee
      invoke    scss
      create      app/assets/stylesheets/my_models.scss

问题是没有使用模型和控制器模板,视图工作正常。

我发现这篇帖子 Scaffolding Rails4 Empty Controller 详细说明了活动管理员(我使用的)使用 inherited_resources_controller。我猜这是问题的一部分,但我不知道如何解决这个问题。我似乎在其他任何地方都找不到明显的解决方案。

更新

https://stackoverflow.com/a/20906765/1135515

模型模板需要在:

/lib/templates/active_record/model/model.rb

并且控制器模板需要是:

/lib/templates/rails/inherited_resources_controller/controller.rb

我更新后的问题是,为什么 rails 使用 inherited_resources_controller 和 scaffold controller,我可以解决这个问题吗?

【问题讨论】:

  • 我偶然发现了一半的解决方案 - 如果我将控制器模板放在 inherited_resources_controller 中,这似乎可以解决控制器模板问题。

标签: ruby-on-rails


【解决方案1】:

覆盖者:

https://github.com/activeadmin/activeadmin/blob/master/docs/14-gotchas.md#rails-5-scaffold-generators

和

https://github.com/activeadmin/inherited_resources/issues/195

简而言之是这样的:

Rails.application.config.generators do |g|
  g.scaffold_controller :scaffold_controller
end

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2012-10-25
    • 2012-01-18
    • 1970-01-01
    • 2016-05-22
    • 2012-10-01
    • 2012-08-07
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多