Rails Вложенные формы с изображениями
Итак, я создаю вложенную форму с моделью Campaigns и модель Sites, где Campaigns has_many Sites. В моей форме "Мои кампании":
<%= f.fields_for :sites do |builder| %>
<%= render "site_fields", :f => builder %>
<% end %>
И затем в _site_fields.html.erb у меня есть:
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<%= f.label "Image"%><br>
<%= f.file_field :image %>
<div class="field">
<%= f.label :url %><br>
<%= f.text_field :url %>
</div>
Все это работает (шокирует), но я хотел бы иметь предварительный просмотр изображения, уже загруженного для определенного сайта в форме. Поэтому, когда у меня есть f.file_field: image, я также хотел бы показать предварительный просмотр этого изображения. Проблема в том, что я, похоже, не могу получить доступ к текущему веб-сайту, потому что я использую f.fields_for.
Любые предложения? Я уверен, что мне не хватает чего-то относительно простого.
Спасибо заранее!
Ответы
Ответ 1
Из вспомогательного объекта формы (в вашем конструкторе case и f) вы должны иметь доступ к объекту модели и URL-адресу, который вы ищете следующим образом:
<%= image_tag f.object.image_url(:thumb) %>
Изображение в image_url зависит от того, как вы назвали этот атрибут, но для вашего образца это должно быть правильно.
Ответ 2
Возможно, вам захочется исследовать драгоценный камень скрепки: https://github.com/thoughtbot/paperclip
Он позволяет вам сделать это, чтобы показать миниатюру существующего изображения.
<div class="field">
<% if @thing.logo? %>
<%= image_tag @thing.logo(:thumb) %><br/>
Change
<% end %>
<%= f.label :logo %>
<%= f.file_field :logo %>
</div>