における値のサブセット私はモデルがあります:formtastic - accepts_nested_attributes_for
class Contact < ActiveRecord::Base
has_many :phones
accepts_nested_attributes_for :phones
end
私はすでに携帯電話1または5があるかもしれません(ユーザーが追加できる50電話#Sを構築したいが、私はいつも50が利用可能にしたいと)私のコントローラで :私の見解では
while contact.phones.length < 50
contact.phones.build({:phone_type_id => PhoneType['a_cool_type'].id})
end
を、私は電話#S 25行ごと
<%= 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 %>
の2列を持つようにしたいです3210は
明らかライン:
<%= form.inputs :for => :phones[25..49] do |phone_form| %>
は動作しませんが、それは(私は願っています)私の意図を伝えます。私はformtasticが根底にあるオブジェクトの関連付けをどのようにつかむかをもっとコントロールしたいと思っています。
次のように動作しますが、空のCSSなしで2つの列を簡単に実行することはできません。
<%= form.inputs :for => :phones do |phone_form| %>
----------更新----
私は遠回しにこの問題を回避することができた: 私はない連絡先として電話#Sの別のリストを構築。 phones.build、しかしPhone.newこれは私が25を表示することができ
<%= 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%>
:(:contact_id => contact.id)と@new_phones
と呼ばれるリストのものを保存するには、その後、私のフォームは次のようになりますページの1つの部分には電話が、もう1つには25個のnested_attributes_forがあります。フォーム提出時に告発されます。
私はラウンドアバウトの方法で必要なものを達成することができました –