Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
200 views
in Technique[技术] by (71.8m points)

How can I get rails to automatically populate a dynamically generated form?

Let's say I have a model

class A < ApplicationRecord
  serialize :vals, Array
end

which stores an array of values. How can I dynamically populate a list of form values? My first guess was to write

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

but this is giving me errors.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Submitting this form

<%= form_for @a do |f| %>
  <% @a.vals.each do |val| %>
    <%= f.text_field :vals, value: val, multiple: true %>
  <% end %>

  <%= f.submit %>
<% end %>

passes "a"=>{"vals"=>["first", "second", "third"]} in the params to the controller.

As mentioned in the comments, you want to look at the vals from an instance of A not the class A.

Note about the serialize (more for the comments saying it looks wrong) I had never used it, that serialize :vals, Array seems to be working for me

A.create(vals: ['hint 1', 'hint 2']); A.last.vals
#   (0.2ms)  BEGIN
#   SQL (0.4ms)  INSERT INTO ... [["vals", "---
- hint 1
- hint 2
"]...
#   (0.6ms)  COMMIT
#   A Load (0.3ms)  SELECT  "as".* FROM "as" ORDER BY "as"."id" DESC LIMIT $1  [["LIMIT", 1]]
# => ["hint 1", "hint 2"]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...