2

所以问题是我有这些课程。

class Post < ActiveRecord::Base
    belongs_to :category
    has_many :text_fields
    has_many :integer_fields

    accepts_nested_attributes_for :text_fields
    accepts_nested_attributes_for :integer_fields
end

class Category < ActiveRecord::Base
    has_many :fields
end

class TextField < ActiveRecord::Base
    belongs_to :post
end

class IntegerField < ActiveRecord::Base
    belongs_to :post
end

Category有很多Fields,每个字段(不要与TextFieldor混淆IntegerField)都有一个列“ type”(指定它是文本字段还是整数字段)和描述(例如,整数字段的“你有多少只宠物”)。当用户想要创建新帖子时,首先他选择类别。然后,根据Fields每个类别拥有的内容,适当TextFieldsIntegerFields应该构建和渲染。我希望我的观点很清楚,我想要一个基于类别生成不同字段的 Post 生成器,就这么简单。

邮寄表格(暂时没有步骤)

= simple_form_for @poster do |f|
    = f.input :category_id, collection: Category.all, prompt: "Choose category"
    = f.input :title
    = f.simple_fields_for :text_fields do |ftf|
        = ftf.input :description
    = f.simple_fields_for :integer_fields do |fif|
        = fif.input :integer_number 

    = f.submit

继承人出了什么问题。我不知道如何给每个字段一个适当的提示。每个 TextField 或 IntegerField 都存在只是因为Category需要它(基于字段)。但是我可以让它有一个适当的提示,而不仅仅是' integer number'每次?

这是我构建这些字段的方式,它可以更改:

  def build_fields_based_on_category
    category.fields.each do |field|
      self.send("#{field.kind}_fields").build
      ##### 'kind' can be integer or 'text'
    end    
  end
4

0 回答 0