На основе Railscast 196 и 197 я создал вложенную форму для добавления нескольких иллюстраций (вложений изображений) в модель статьи. У меня есть такая форма:
<%= 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 %>
И часть _illustration_fields выглядит следующим образом:
<div class="fields">
<p>
<%= f.label :illustration, "Illustration" %><br />
<%= link_to_remove_fields "remove", f %><br />
<%= f.file_field :illustration %>
</p>
</div>
Если иллюстрация уже существует, я хочу отобразить ее на странице внутри тега изображения. Я попытался отобразить изображение внутри партиала так:
<% unless :illustration.illustration.blank? %>
<%= image_tag(:illustration.illustration.url) %>
<% end %>
Но выдает ошибку:
undefined method `illustration' for :illustration:Symbol
Поле иллюстрации определенно существует в модели иллюстрации, поскольку я могу отобразить изображение внутри основной формы следующим образом:
<% unless illustration.illustration.blank? %>
<%= image_tag(illustration.illustration.url) %>
<% end %>
Кажется, что Rails не понимает иллюстративную информацию в частичную (или я не передаю ее правильно). Как правильно подходить к этому?