Rails:如何在使用表单对象时在表单中使用数组?

时间:2017-05-10 20:34:06

标签: ruby-on-rails

我接受了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 %>

而不是五个字段,我只得到一个。

我有什么明显的错误吗?如何获取数组中每个项目的字段?

1 个答案:

答案 0 :(得分:0)

通常,如果您尝试存储多个对象(在您的案例中为示例网址),您将拥有每个对象的记录,而不是将它们保存在数组中。例如,注册会有许多示例网址。这会使你的f.fields_for:sample_urls起作用,因为有多个样本网址记录。