2010-05-15 65 views
1

我有一个基本的has_many通过关系进入第二个相关的模型:HOWTO:在嵌套属性建设者块

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

    accepts_nested_attributes_for :bars, :wtfs 
end 

在我的CRUD的形式我对跆拳道建设者块,但我需要的标签来自酒吧(例如称为标签的属性)。什么是适当的方法来做到这一点?

这是最简单的支架:

<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工作轨道中。所以在上面的例子中,我需要访问实际的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 %>