如何将simple_form与嵌套的 ActiveModel 对象(不是 ActiveRecord)一起使用?



我正在尝试将simple_formActiveModel对象一起使用,以便在使用该数据执行工作之前验证表单数据。此数据不会持久保存到数据库中,因此不使用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 %>

我希望每添加到SomeFormItemitems,都会得到 2 个名为"项目名称"的字段,但是,我只得到 1 个,而且它 id 没有以我通常期望的数组格式命名,例如some_form[items][0][name].

有人知道我在这里做错了什么,还是我需要手动执行此操作?

我认为您应该为嵌套项目声明一个 id 属性,并在以表单呈现之前为其分配一个(整数(值。

相关内容

  • 没有找到相关文章

最新更新