如何让 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"]