J'ai un formulaire rails3 qui permet à l'utilisateur de modifier une liste de réponses, dans le cadre d'une évaluation.
J'utilise un fields_for
boucle pour générer chaque entrée de texte :
app/models/assessment.rb :
class Assessment < ActiveRecord::Base
serialize :answers, Hash # answers is a t.text field used to store all answers.
end
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 %>
PROBLÈME : Le site fields_for
ne fait aucune itération, aucun champ n'est imprimé.
( malgré "Réponses initialisées :" montrant correctement : {"a"=>143, "b"=>42} )