Подтвердить что ты не робот

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.

Любые предложения? Я уверен, что мне не хватает чего-то относительно простого.

Спасибо заранее!

4b9b3361

Ответ 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>