我正在尝试将simple_form
与ActiveModel
对象一起使用,以便在使用该数据执行工作之前验证表单数据。此数据不会持久保存到数据库中,因此不使用ActiveRecord
。
模型:
class SomeForm
include ActiveModel::Model
attr_accessor :name, :items
validates :name, presence: true
end
class SomeFormItem
include ActiveModel::Model
attr_accessor :name
validates :name, presence: true
end
控制器:
def new
@form = SomeForm.new
@form.items = [SomeFormItem.new, SomeFormItem.new]
end
视图
<%= simple_form_for @form, url: some_destination_path do |f| %>
<%= f.input :name %>
<%= simple_fields_for :items do |i| %>
<%= i.input :name, label: "Item Name" %>
<% end %>
<% end %>
我希望每添加到SomeFormItem
items
,都会得到 2 个名为"项目名称"的字段,但是,我只得到 1 个,而且它 id 没有以我通常期望的数组格式命名,例如some_form[items][0][name]
.
有人知道我在这里做错了什么,还是我需要手动执行此操作?
我认为您应该为嵌套项目声明一个 id 属性,并在以表单呈现之前为其分配一个(整数(值。