我想用form_for
向控制器提交一个列表。此列表应填充text_field
。
此实现将提交:some_list
,其值只有列表中一个text_field的值(如预期)。我希望将X数量的text_field
作为列表提交,因为文本字段的数量是动态的,以接收某种形式的东西:params {..."name":"Something", "some_list":["a", "b"]}
或一些等效的JSON。
<%= form_for @my_model do |f|%>
<% f.text_field :name %>
<% (0...@some_limit).each do |index| %>
<%= f.text_field :some_list %>
<% end %>
<% end %>
请注意,该模型不是ActiveRecord
class MyModel
include ActiveModel::Model
include ActiveModel::Validations
attr_accessor :name, :some_list
validates :name, :presence => true
validates :some_list, :presence => true
end
答案 0 :(得分:2)
添加multiple: true
和text_field名称。
<%= form_for @my_model do |f|%>
<% f.text_field :name %>
<% (0...@some_limit).each do |index| %>
<%= f.text_field :some_list, multiple: true %>
<% end %>
<% end %>
答案 1 :(得分:1)
您可以像这样使用text_field_tag
<% (0...@some_limit).each do |index| %>
<%= text_field_tag "#{f.object.class.to_s.underscore}[some_list][]" %>
<% end %>
这是一种hack,可接受的答案是适当的解决方案。