Mam problem z zagnieżdżoną formularzem. Zaimplementowałem rozwiązanie z postaciami zagnieżdżonymi z railscastów 196 & 197. Działa, jeśli nie mam błędów sprawdzania poprawności.szyny field_for nie wyświetla się po błędzie sprawdzania poprawności w postaci zagnieżdżonej
Tak więc, formularz renderuje się doskonale po załadowaniu, łącznie z polami zagnieżdżonymi (w części fields_for).
Ale formularz ma walidacje. Gdy sprawdzanie poprawności nie powiedzie się, kontroler wyrenderuje: nowy. Następnie formularz renderuje połączone pola modelu, ale zagnieżdżone pola nie są już renderowane. Czy jest na to jakieś rozwiązanie?
kontroler
def new
@property = Property.new
@property.images.build
end
def create
@property = Property.new(params[:property])
if @property.save
flash[:success] = t('Your_property') + ' ' + t('is_successfully_created')
redirect_to myimmonatie_url
else
render :action => 'new'
end
end
część zdania:
<% form_for :property, @property, :url => { :action => "create" }, :html => { :multipart => true } do |f| %>
<div id="new-property-form-spannedcols">
<div class="formField inptRequired">
<%= f.label :postal_code, t("Postal_code") %>
<%= f.text_field :postal_code, :class => 'inptMedium short' %>
</div>
<div id="city_row" class="formField inptRequired">
<%= f.label :city, t("City") %>
<div id="city_cell">
<%= render :partial => 'ajax/cities', :locals => { :postal_code => @property.postal_code } %>
</div>
</div>
...
<% f.fields_for :images do |builder| %>
<div class="formField">
<%= builder.label :photo, t("Photo_path_max_3mb") %>
<%= builder.file_field :photo, :class => 'inptMedium' %>
<%= builder.hidden_field :order, :value => "1" %>
</div>
<% end %>
</div> <!-- /new-property-form-spannedcols -->
<div class="formBtn">
<%= f.submit t("Save"), :class => 'btnMedium bg-img-home' %>
</div> <!-- /formBtn -->
<%- end -%>
Witam, Nie powoduje błędu, nie jest renderowany, również nie ma błędu w dzienniku. I tak, twoje rozwiązanie działa! :) dzięki –