Mam formularz rails3, który pozwala użytkownikowi edytować listę odpowiedzi w ramach oceny.
używam fields_for
pętli do generowania każdego tekstu:Rails3 fields_for on text Hash: nie działa zgodnie z oczekiwaniami
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/oceny/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 %>
PROBLEM: Pętla fields_for
wykonuje zerową iterację, bez drukowania pola.
(pomimo "Inicjowanych odpowiedzi:" poprawnie wyświetlających: {"a" => 143, "b" => 42})
o ile wiem pola dla są stosowane, gdy masz relację pomiędzy modeli AR, więc nie jestem pewien, dlaczego starasz się uczynić pola do odpowiedzi z tego pomocnika może trzeba napisać własną pomocnika lub renderować częściowo – Bohdan
@Bohdan: Wydaje się możliwe, sądząc po tym wpisie: http://stackoverflow.com/questions/1002963#4809844 –
wydaje się, że ten pomocnik akceptuje kolekcję jako parametr, możesz zmienić ją na '<% formularza. fields_for @ assessment.answers do | answer_fields | %> '? – Bohdan