文本哈希Rails3 fields_for:工作不正常不正常、文本、工作、fields_for

2023-09-09 22:07:54 作者:没有未来

我有一个rails3形式,它允许用户编辑答案的列表,作为评估的一部分。 我用的是 fields_for 循环来生成每个文本输入:

I have a rails3 form that allows the user to edit a list of answers, as part of an assessment. I use a fields_for loop to generate each text input:

应用程序/模型/ assessment.rb:

app/models/assessment.rb :

class Assessment < ActiveRecord::Base
  serialize :answers, Hash   # answers is a t.text field used to store all answers.
end

应用程序/视图/评估/ new.html.erb:

app/view/assessments/new.html.erb :

<p>Initialized answers: <%= @assessment.answers %></p>

<% item_counter = 0 %>
<% form.fields_for :answers do |answer_fields| %>
    <% item_id = "item" + item_counter.to_s %>
    <% item_counter = item_counter + 1 %>
    <div class="field">
      <%= answer_fields.label "the appropriate question, omitted for brevity" %>
      <br/>
      <% @assessment.answers[item_id] = "" %>
      <%= answer_fields.text_field item_id, :value => @assessment.answers[item_id] %>
    </div>
<% end %>

问题:的 fields_for 循环不为零的迭代,没有实地获取打印。 (尽管初始化答案:示出正确地:{一个=> 143,B=> 42})

PROBLEM: The fields_for loop does zero iteration, no field gets printed. ( despite "Initialized answers:" showing correctly: {"a"=>143, "b"=>42} )

推荐答案

本应该做的。在本地进行测试。

This should do. Tested locally.

<p>Initialized answers: <%= @assessment.answers %></p>

<% @assessment.answers.each do |key, value| %>
  <%= form.fields_for :answers, @assessment.answers[key] do |answer_fields| %>
      <div class="field">
        <%= answer_fields.label key %>
        <br/>
        <%= answer_fields.text_field key, :value => value %>
      </div>
  <% end %>
<% end %>