如何让rails自动填充动态生成的表单?

时间:2017-07-12 20:09:15

标签: ruby-on-rails forms dynamicform

假设我有一个模型

class A < ApplicationRecord
  serialize :vals, Array
end

存储一组值。如何动态填充表单值列表?我的第一个猜测就是写

<%= @a.vals.each_with_index do |v, i| %>
  <%= f.text_field :hints %>
<% end %>

但是这给了我错误。

1 个答案:

答案 0 :(得分:2)

提交此表格

<%= 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"]}传递给控制器​​。

正如评论中所述,您希望查看vals的实例中的A,而不是类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 $1  [["LIMIT", 1]]
# => ["hint 1", "hint 2"]
相关问题