2010-05-15 3 views
1

중첩 된 속성 빌더 블록에서 두 번째 관련 모델에 액세스 : 나는 무슨 일에 대한 빌더 블록을 내 침전물 형태에하우투 : 나는 관계를 통해 기본 has_many이

class Foo < ActiveRecord::Base 
    has_many :bars, :dependent => :destroy 
    has_many :wtfs :through => :bars 

    accepts_nested_attributes_for :bars, :wtfs 
end 

,하지만 난에 라벨이 필요 막대에서옵니다 (예 : label이라는 속성). 이 작업을 수행하는 적절한 방법은 무엇입니까?

<h1>New foo</h1> 

<% form_for(@foo) do |f| %> 
    <%= f.error_messages %> 

    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 

    <h2>Bars</h2> 
    <% f.fields_for :wtfs do |builder| %> 
    <%= builder.hidden_field :bar_id %> 
    <p> 
    <%= builder.text_field :wtf_data_i_need_to_set %> 
    </p> 
    <% end %> 

    <p> 
    <%= f.submit 'Create' %> 
    </p> 
<% end %> 

<%= link_to 'Back', foos_path %> 

답변

1

대답은 작동 FormBuilder 방법 레일을 분석에서 발견되었다 :

는 여기에 가장 간단한 발판입니다. 따라서 위의 예에서 bar에서 속성을 얻을 수 있도록 실제 wtf 객체에 액세스해야하므로 다음을 수행해야합니다.

<h2>Bars</h2> 
    <% f.fields_for :wtfs do |builder| %> 
    <%= builder.hidden_field :bar_id %> 
    <p> 
    <%= builder.label builder.object.bar.data_i_need_for_a_label %> 
    <%= builder.text_field :wtf_data_i_need_to_set %> 
    </p> 
    <% end %> 
관련 문제