Je suis en train de courir ce ..Comment passez-vous les options via fields_for?
- f.fields_for :referrals do |qf|
Mais je voudrais passer cela, @organization.referrals.select{|ref|ref.new_record?}
aussi bien. C'est ainsi que les formes passées sont exclusivement de nouveaux objets, et non plus anciens.
J'ai essayé de le faire ..
- f.fields_for :referrals do |qf|
- if qf.object.new_record?
= render :partial => 'referral_fields', :locals => {:qf => qf}
ce qui en fait afficher correctement dans la vue, mais les params sont encore peuplées avec chaque objet imbriqué précédemment créé.
Ce qui me porte à croire que j'ai besoin de passer cette option dans l'instruction fields_for elle-même.
J'ai aussi essayé:
- f.fields_for @organization.referrals.select{|ref|ref.new_record?} do |qf|
= render :partial => 'referral_fields', :locals => {:qf => qf}
Outre ceci:
- f.fields_for :referrals, @organization.referrals.select{|ref|ref.new_record?} do |qf|
= render :partial => 'referral_fields', :locals => {:qf => qf}
Le premier exemple montrera et ne permet de passer un objet. Où que mon formulaire est de permettre un nombre dynamique de formulaires imbriqués en double.
La deuxième affiche et passer tous les objets imbriqués
App Infos
#organization.rb
has_many :referrals
accepts_nested_attributes_for :referrals, :reject_if => proc { |attributes| attributes.all? { |k, v| v.blank? } }, :allow_destroy => true
#referral.rb
belongs_to :organization
#referrals_controller.rb
def new
2.times { @organization.referrals.build }
....
def create
@referral = Referral.new(params[:referral])
if @referral.valid? && @organization.referrals << @referral
flash[:notice] = "Referrals saved."
redirect_to new_organization_referrals_path(@organization)
else
render :action => :new, :layout => 'manage'
end
end
Non ne fonctionnera pas. Cela montre et passe tous les objets imbriqués aux params. – Trip
Mais merci nonethless;) – Trip
quelle version de rails utilisez-vous? –