Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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

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

1 Answer

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"]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...