Ruby on rails Rails生成器脚手架自定义,为什么模型和视图没有属性数据?

Ruby on rails Rails生成器脚手架自定义,为什么模型和视图没有属性数据?,ruby-on-rails,ruby,generator,Ruby On Rails,Ruby,Generator,当我运行“rails g account\u scaffold account/student name:string age:integer”时,模型和视图没有属性 代码如下: lib/generators/account_scaffold/account_scaffold_generators.rb: 需要“rails/generators/resource\u helpers” 需要“rails/generators/model_助手” 模块导轨 模块生成器 类AccountScaffol

当我运行“rails g account\u scaffold account/student name:string age:integer”时,模型和视图没有属性

代码如下:

lib/generators/account_scaffold/account_scaffold_generators.rb:
需要“rails/generators/resource\u helpers”
需要“rails/generators/model_助手”
模块导轨
模块生成器
类AccountScaffoldGenerator:rails,:required=>true,:as=>:model do |调用|
调用调用,[单数名称]
结束
def创建控制器文件
如果@options[:禁用\u公共]
@options=@options.merge(helper:false)
结束
模板“controller.rb”,File.join('app/controllers',controller\u class\u path,“{controller\u File\u name}\u controller.rb”)
结束
hook_for:template_engine,:test_framework,as::scaffold do |调用|
控制器\名称\参数=控制器\类\路径。空白?单数名称:(控制器类路径。连接(“/”+“/”+单数名称)
如果@options[:禁用\u公共]
调用调用,[controller_name_param],{view_specs:false,request_specs:false,routing_specs:false}
其他的
调用调用的[controller_name_param]
结束
结束
hook_for:helper,as::scaffold do |已调用|
调用已调用,[控制器名称]
结束
钩住:资产做|资产|
调用资产,[控制器名称]
结束
钩住:资源路径do路径|
调用路由,[控制器名称]
结束
结束
结束
结束
lib/templates/slim/scaffold/_form.html.slim
=表示(@)do|f的简单形式|
.表格输入
=f:
.形式行动
=f.按钮:提交

我找到的最干净的解决方法是重写初始值设定项。我的应用程序中有以下生成器:

module Rails::Generators
  class GrapesGenerator < ::Rails::Generators::ScaffoldGenerator
    attr_reader :fields

    def initialize(args, *options) #:nodoc:
      @fields = args[1..-1]
      super
    end

    hook_for :orm, as: :model do |instance, orm|
      instance.invoke orm, [ instance.options[:model_name], instance.fields ]
    end
  end
end
modulerails::Generators
类图生成器<::Rails::Generator::ScaffoldGenerator
属性读取器:字段
def初始化(参数,*选项)#:nodoc:
@字段=参数[1..-1]
超级的
结束
hook_for:orm,as::model do |实例,orm|
instance.invoke orm[instance.options[:model_name],instance.fields]
结束
结束
结束
= simple_form_for(@<%= singular_name %>) do |f|
  .form-inputs
    <%- attributes.each do |attribute| -%>
      = f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %>
    <%- end -%>

  .form-actions
    = f.button :submit
module Rails::Generators
  class GrapesGenerator < ::Rails::Generators::ScaffoldGenerator
    attr_reader :fields

    def initialize(args, *options) #:nodoc:
      @fields = args[1..-1]
      super
    end

    hook_for :orm, as: :model do |instance, orm|
      instance.invoke orm, [ instance.options[:model_name], instance.fields ]
    end
  end
end