如何让 rails 自动填充动态生成的表单?
How can I get rails to automatically populate a dynamically generated form?
假设我有一个模型
class A < ApplicationRecord
serialize :vals, Array
end
它存储一个值数组。如何动态填充表单值列表?我的第一个猜测是写
<%= @a.vals.each_with_index do |v, i| %>
<%= f.text_field :hints %>
<% end %>
但这给了我错误。
正在提交此表单
<%= form_for @a do |f| %>
<% @a.vals.each do |val| %>
<%= f.text_field :vals, value: val, multiple: true %>
<% end %>
<%= f.submit %>
<% end %>
将参数中的 "a"=>{"vals"=>["first", "second", "third"]}
传递给控制器。
如评论中所述,您想从 A
的实例中查看 vals
而不是 class A
.
关于 serialize
的注意事项(更多评论说它看起来不对)我从未使用过它,serialize :vals, Array
似乎对我有用
A.create(vals: ['hint 1', 'hint 2']); A.last.vals
# (0.2ms) BEGIN
# SQL (0.4ms) INSERT INTO ... [["vals", "---\n- hint 1\n- hint 2\n"]...
# (0.6ms) COMMIT
# A Load (0.3ms) SELECT "as".* FROM "as" ORDER BY "as"."id" DESC LIMIT [["LIMIT", 1]]
# => ["hint 1", "hint 2"]
假设我有一个模型
class A < ApplicationRecord
serialize :vals, Array
end
它存储一个值数组。如何动态填充表单值列表?我的第一个猜测是写
<%= @a.vals.each_with_index do |v, i| %>
<%= f.text_field :hints %>
<% end %>
但这给了我错误。
正在提交此表单
<%= form_for @a do |f| %>
<% @a.vals.each do |val| %>
<%= f.text_field :vals, value: val, multiple: true %>
<% end %>
<%= f.submit %>
<% end %>
将参数中的 "a"=>{"vals"=>["first", "second", "third"]}
传递给控制器。
如评论中所述,您想从 A
的实例中查看 vals
而不是 class A
.
关于 serialize
的注意事项(更多评论说它看起来不对)我从未使用过它,serialize :vals, Array
似乎对我有用
A.create(vals: ['hint 1', 'hint 2']); A.last.vals
# (0.2ms) BEGIN
# SQL (0.4ms) INSERT INTO ... [["vals", "---\n- hint 1\n- hint 2\n"]...
# (0.6ms) COMMIT
# A Load (0.3ms) SELECT "as".* FROM "as" ORDER BY "as"."id" DESC LIMIT [["LIMIT", 1]]
# => ["hint 1", "hint 2"]