Как: получить доступ ко второй связанной модели в блоке вложенных атрибутов - PullRequest
1 голос
/ 15 мая 2010

У меня есть базовые отношения has_many:

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

  accepts_nested_attributes_for :bars, :wtfs
end

В моих грубых формах у меня есть блок конструктора для wtf, но мне нужно, чтобы метка исходила от бара (например, атрибут с именем 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 Ответ

1 голос
/ 15 мая 2010

Ответ был найден при анализе работы рельсов FormBuilder. Итак, в приведенном выше примере, где мне нужно получить доступ к фактическому объекту wtf, чтобы я мог получить свойство bar, мне нужно сделать следующее:

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