私はこれまでのことをすべて見てきましたが、正しい概念的な説明や技術的なプロセスが見つからないようで、間違っている可能性があります。親モデルを介して姉妹の属性にアクセス
同じ親によって接続された2つの子モデルがあります。親のインスタンスを介して、子供のインデックスビューから子供Bの属性にアクセスしたいと思います。
ハイレベルな概要
Property
/ \
Order Owner
基本的に私は、開いているすべてのOrders
を示すインデックスページを持って、各Order
はProperty
(親)を持っている必要があり、すべてのProperty
は、所有者を持っています。だから私はOrders
インデックスページにあり、Property's Owner
のfirst_name
を見たいのですが、どうすればそれにアクセスできますか?
私はのような何かを行う場合は、次の
@order.property.owners.first_name
を、私は私が行うがあれば、エラーundefined method
を得る:
@order.property.owners
私はエラーが表示されるのではなくはありません:
#<Owner::ActiveRecord_Associations_CollectionProxy:0x007f8a85368988>
を
が他のすべての正しい情報と共に私の見解に現れます。
モデル
Property
has_many :orders
has_many :owners
accepts_nested_attributes_for :owners
Owner
belongs_to :property
Orders
belongs_to :property
has_many :owners, through: :property
accepts_nested_attributes_for :owners
受注コントローラ
def open_orders
@open_orders = Order.where(status: "Open").paginate(page: params[:page], per_page: 15)
###@orders = Order.all
###@properties = Property.find(@orders.property.id)
###@owners = Owner.find(@properties.owners.id)
render 'orders/open'
終わり、私はちょうどAようとしていたが、働いていなかった、包み、それを含めたものをコメントアウト
^どこかでちょっと離れた。お使いのモデルの定義に従って
Open_orders
ビュー
<% @open_orders.each do |order| %>
<tr>
<td><%= order.client_id %></td>
<td><%= order.order_number %></td>
<td><%= order.property.address1 %></td>
<td><%= order.property.owners %></td>
<td><%= order.order_update ? "Yes" : "No" %></td>
<td><%= order.status %></td>
<td><%= order.task %></td>
<td><%= order.created_at %></td>
<td><%= link_to fa_icon("edit"), edit_property_order_path(order, order.property.id), class: "m-r-xs", remote: true, data: { 'data-toggle' => "modal", 'data-target' => '#orders-modal'} %></td>
</tr>
これはかなりおかげさまでした。もう一度@Mdに感謝します。ファハンメモン! 唯一のことは、First_nameとLast_nameが2つの別々のフィールドにあることです。複数の所有者がある場合は、すべてをカンマでジョインします。 'order.owners.pluck([:first_name1、:last_name1]、[: first_name2、:last_name2])。join( '、') 'それらをまとめてみようと思っていますか?それ以外は、あなたの答えはまさに私が探していたものでした! –
アップデートを確認してください:) –
ああ、もちろん!それを考えなかったが、あなたがそれを言ったので、それは全然意味をなさない。もう一度ありがとう、本当に感謝します! –