1

私は関係を介して基本的な has_many を持っています:

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

  accepts_nested_attributes_for :bars, :wtfs
end

私のcrudフォームには、wtfのビルダーブロックがありますが、バーからラベルを取得する必要があります(たとえば、ラベルと呼ばれる属性)。これを行う適切な方法は何ですか?

最も単純な足場は次のとおりです。

<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 %>
4

1 に答える 1

1

その答えは、Rails の 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 %>
于 2010-05-15T18:15:17.553 に答える