Избегать fields_for для добавления одной записи в связанную модель - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть следующие ассоциации:

class Developer < ActiveRecord::Base
  has_many :large_photos, :class_name => 'Photo', :conditions => { :large => true }, :reject_if => proc { |x| x['image'].blank? }
end

class Photo < ActiveRecord::Base
  belongs_to :developer
  mount_uploader :image, ImageUploader # Carrierwave
end

Теперь я собираюсь создать форму разработки, которая при отправке добавит одно поле файла для загрузки нового Photo.На данный момент у меня есть:

<%= form_for @developer do |form| %>

    <%= form.fields_for :large_photos do |sf| %>
    <div class="dropzone">
        <%= sf.file_field :image %>
        <%= sf.hidden_field :large, :value => '1' %>
        <%= sf.hidden_field :image_cache %>
    </div>
    <% end %>

<% end%>

Теперь проблема, с которой я столкнулся, заключается в том, что fields_for просматривает существующие записи (конечно, это так!), Которых я предпочел бы избежать, япросто хочу добавить одно поле файла для загрузки новой фотографии.Как бы я пошел по этому поводу?

1 Ответ

5 голосов
/ 08 февраля 2012
<%= form.fields_for :large_photos, @developer.large_photos.build do |project_fields| %>

Вместо того, чтобы создавать поля для каждой существующей фотографии, эта строка создает новый Photo и показывает поля только для этого (поэтому поля пусты, я думаю, это то, что вы хотите).

...