2010-12-13 5 views
2

의 값의 집합 나는 모델이 : 나는 사용자가 (추가 할 수 있습니다 이미 휴대폰 1 또는 5있을 수 있습니다 (50) 전화 #S을 구축하고자formtastic - accepts_nested_attributes_for

class Contact < ActiveRecord::Base 
    has_many :phones 
    accepts_nested_attributes_for :phones 
end 

을,하지만 난 항상 사용할 수 (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| %> 

이 작동하지 않습니다,하지만 내 의도를 (I 희망) 전달한다. formtastic이 기본 객체 연결을 잡는 방법에 대해 더 많은 제어권을 갖고 싶습니다.

다음은 작동하지만 멋진 CSS가 없으면 두 열을 쉽게 처리 할 수 ​​없습니다.

<%= form.inputs :for => :phones do |phone_form| %> 

의견이 있으십니까?

---------- 업데이트 ----

나는 로터리 방식으로이 문제를 해결 얻을 수있었습니다 : 그럴 연락처로 전화 #S 별도의 목록을 만들었습니다. 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 : ex 전의 전화기 양식 제출시 pected.

+0

나는 로터리 방식으로 필요한 것을 성취 할 수있었습니다. –

답변

2

내가 원하는대로 중첩 된 특성을 얻는 데 항상 문제가 있었지만 문제가 해결 될 수 있습니다.

모델 :

class Contact < ActiveRecord::Base 
    has_many :phones 
    accepts_nested_attributes_for :phones 
end 

컨트롤러 : 우리가 @contract.phones.build 50 회 반복하고 참조,이 50 개의 새로운 인스턴스를 생성합니다.

class Contact < ApplicationController 
    def new 
    @contact = Contact.new 
    25.times do 
     @contact.phones.build 
    end 

    end 
end 

보기 new.html.erb :

... 
<%= p.semantic_fields_for :phones do |ec| %> 
    <%= ec.input :number %> 
<% end %> 
... 

나는 슬프게도 더 명확한 깨끗한 소용로, 루프를 차단하는 몇 가지 시도를 시도했다.

+1

사격 한 사람에게 감사드립니다. 나는 나를 위해 일한 해결책을 게시했다. 매우 감사. –

+0

해답을 답변으로 게시하고 올바른 것으로 표시해야합니다. ;-) –

관련 문제