我接受了http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/的建议,并创建了一个表单对象。
它开始了:
class CreatorSignup
include Virtus.model
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
attr_reader :user
attr_reader :writing_sample
attribute :sample_urls, Array[String]
:sample_urls
将用于创建:writing_samples
:
sample_urls.each do |sample_url|
@user.writing_samples.create!(url: sample_url)
end
问题是,我不知道如何使用sample_urls
数组中每个项目的字段填充表单。
我的#new
行动:
def new
@signup = CreatorSignup.new
@signup.sample_urls = Array.new(5)
end
表单的构建方式如下:
<%= f.fields_for :sample_urls do |sample_f| %>
<%= sample_f.text_field :url %>
<% end %>
而不是五个字段,我只得到一个。
我有什么明显的错误吗?如何获取数组中每个项目的字段?
答案 0 :(得分:0)
通常,如果您尝试存储多个对象(在您的案例中为示例网址),您将拥有每个对象的记录,而不是将它们保存在数组中。例如,注册会有许多示例网址。这会使你的f.fields_for:sample_urls起作用,因为有多个样本网址记录。