值的子集,我有一個模型:formtastic - 在accepts_nested_attributes_for
class Contact < ActiveRecord::Base
has_many :phones
accepts_nested_attributes_for :phones
end
我想建立50個電話#秒,用戶可以添加(可能已經存在的手機1或5,但我總是想50個可用) 在我的控制器:
while contact.phones.length < 50
contact.phones.build({:phone_type_id => PhoneType['a_cool_type'].id})
end
在我看來,我想有手機#秒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。
<%= form.inputs :for => :phones do |phone_form| %>
有什麼建議嗎?
----------更新----
我能解決這個問題的一種迂迴的方式: 我建立了手機#秒的單獨列表沒有接觸。 phones.build,但Phone.new(:CONTACT_ID => contact.id)和存儲那些在列表稱爲@new_phones
然後我的形式如下:
<%= 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%>
這讓我顯示25手機在頁面的一部分,另一部分爲25,使用nested_attributes_for:手機作爲前端工作通過表單提交。
我能夠以迂迴的方式完成我需要的東西 – 2011-01-19 04:37:49