J'ai un modèle:formtastic - sous-ensemble de valeurs dans accepts_nested_attributes_for
class Contact < ActiveRecord::Base
has_many :phones
accepts_nested_attributes_for :phones
end
Je veux construire 50 #s téléphone que les utilisateurs peuvent ajouter (il y a peut-être déjà des téléphones 1 ou 5, mais je veux toujours 50 disponible) Dans mon contrôleur:
while contact.phones.length < 50
contact.phones.build({:phone_type_id => PhoneType['a_cool_type'].id})
end
à mon avis, je veux avoir 2 colonnes de 25 lignes téléphoniques chaque
<%= semantic_form_for contact do |form| %>
<table width=50%>
<%= form.inputs :for => :phones[0..25] do |phone_form| %>
<td align="center"><%= phone_form.input :number, :label => false %></td>
....
<% end %>
</table>
<table width=50%>
<%= form.inputs :for => :phones[25..49] do |phone_form| %>
<td align="center"><%= phone_form.input :number, :label => false %></td>
....
<% end %>
</table>
<%end %>
Il est évident que la ligne:
<%= form.inputs :for => :phones[25..49] do |phone_form| %>
ne fonctionne pas, mais il transmet mon intention (je l'espère). Je veux avoir plus de contrôle sur la façon dont formtastic saisit l'association d'objet sous-jacente.
Les travaux suivants, mais je ne peux pas faire deux colonnes facilement sans css fantaisie.
<%= form.inputs :for => :phones do |phone_form| %>
Une suggestion?
---------- ---- Mise à jour
j'ai pu contourner ce d'une manière détournée: Je construit une liste séparée de téléphone #s pas de contacts. phones.build, mais Phone.new (: contact_id => contact.id) et stocker ces données dans une liste appelée @new_phones
Alors ma forme ressemble à ceci:
<%= semantic_form_for @contact, :url => ..., do |f| %>
<% @new_phones[0...25].each_with_index do |phone, i| %>
<%= f.fields_for :phones, phone, :child_index => i do |phone_form| %>
<%= render "phone_fields", {:phone_form => phone_form, :phone => phone} %>
<%end%>
<% end %>
....
<% @new_phones[25...50].each_with_index do |phone, i| %>
<%= f.fields_for :phones, phone, :child_index => i+25 do |phone_form| %>
<%= render "phone_fields", {:phone_form => phone_form, :phone => phone} %>
<%end%>
<% end %>
<%end%>
cela m'a permis d'afficher 25 téléphones sur une partie de la page, et 25 sur un autre, avec nested_attributes_for: téléphones fonctionnant comme ex pected sur le formulaire submit.
J'ai été en mesure d'accomplir ce dont j'avais besoin d'un rond-point façon –