【问题标题】:Howto: Access a second related model in a nested attribute builder block如何:访问嵌套属性构建器块中的第二个相关模型
【发布时间】:2010-05-15 17:05:04
【问题描述】:

我有一个基本的 has_many through 关系:

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

  accepts_nested_attributes_for :bars, :wtfs
end

在我的 crud 表单上,我有一个用于 wtf 的构建器块,但我需要来自 bar 的标签(例如,一个名为 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 %>

【问题讨论】:

    标签: ruby-on-rails forms nested-attributes formbuilder


    【解决方案1】:

    在分析 rails 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 %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多