Basierend auf Railscast 196 und 197, habe ich ein verschachteltes Formular zum Hinzufügen mehrerer Illustrationen (Bildanhänge) zu meinem Artikelmodell erstellt. Ich habe eine Form wie folgt aus:Wie werden zusätzliche Informationen teilweise in eine verschachtelte Form übergeben?
<%= form_for @article, :html => { :multipart => true } do |f| %>
<h2>Illustrations</h2>
<% for illustration in @article.illustrations %>
<%= f.fields_for :illustrations, illustration do |builder| %>
<%= render :partial => "illustration_fields",
:locals => { :f => builder, :illustration => illustration } %>
<% end %>
<% end %>
<p>
<%= f.submit "Submit" %>
</p>
<% end %>
Und die _illustration_fields Teil sieht wie folgt aus:
<div class="fields">
<p>
<%= f.label :illustration, "Illustration" %><br />
<%= link_to_remove_fields "remove", f %><br />
<%= f.file_field :illustration %>
</p>
</div>
Wenn die Abbildung bereits vorhanden ist, möchte ich es nicht in einem Image-Tag auf der Seite angezeigt werden soll. Ich habe versucht, das Bild im Teil wie folgt dargestellt:
<% unless :illustration.illustration.blank? %>
<%= image_tag(:illustration.illustration.url) %>
<% end %>
Aber es wirft einen Fehler auf:
undefined method `illustration' for :illustration:Symbol
Die Abbildung Feld existiert auf jeden Fall in der Abbildung Modell, als ich das Bild im Inneren des Displays kann Hauptform wie folgt aus:
<% unless illustration.illustration.blank? %>
<%= image_tag(illustration.illustration.url) %>
<% end %>
es scheint, dass Rails nicht die Darstellung von Informationen in den Teil nicht versteht (oder ich vorbei es nicht richtig). Was ist der richtige Ansatz dafür?
Uuhh ... eewwwww :) IMHO, es ist viel schöner, "Illustration" als lokal zu übergeben. – Zabba