2012-02-08 4 views
2

j'ai les associations suivantes:Éviter fields_for pour ajouter un seul enregistrement à modèle associé

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 

Maintenant, je suis à la recherche de construire une forme de développement qui, lorsqu'il est soumis, ajoutera un seul champ de fichier pour le téléchargement un nouveau Photo. En ce moment j'ai:

<%= 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%> 

Maintenant, le problème que j'ai avec ce que fields_for est mise en boucle à travers les enregistrements existants (bien sûr, il est!) Que je préfère éviter, je veux juste ajouter un seul champ de fichier pour télécharger une nouvelle photo. Comment pourrais-je m'y prendre?

Répondre

5
<%= form.fields_for :large_photos, @developer.large_photos.build do |project_fields| %> 

Au lieu de créer les champs pour chaque photos existantes, cette ligne fait construire un nouveau Photo et afficher les champs que pour celui-ci (donc les champs sont vides, je pense que c'est ce que vous voulez).

+1

Eh bien, tirer. Cela fait tellement de sens et pourtant je n'avais toujours pas pensé à faire ça: S Grand-mère. Merci! –

Questions connexes