所以问题是我有这些课程。
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
,每个字段(不要与TextField
or混淆IntegerField
)都有一个列“ type
”(指定它是文本字段还是整数字段)和描述(例如,整数字段的“你有多少只宠物”)。当用户想要创建新帖子时,首先他选择类别。然后,根据Fields
每个类别拥有的内容,适当TextFields
且IntegerFields
应该构建和渲染。我希望我的观点很清楚,我想要一个基于类别生成不同字段的 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