1

User、Order、UserOrder の 3 つのモデルがあります。

user_order.rb

belongs_to :user, :class_name => "User"
belongs_to :order, :class_name => "Order"

user.rb

has_many :user_orders, foreign_key: :user_id,
                      dependent: :destroy
has_many :ordering, through: :user_orders,
                  source: :order

order.rb

has_many :reverse_user_orders, foreign_key: :order_id, 
                              dependent: :destroy,
                              class_name: "UserOrder"

has_many :orderers, through: :reverse_user_orders, source: :user

orders_controller.rbにコントローラーアクションがあり、ユーザーと注文の間の関係を作成し、正常に動作します(データベースにレコードを作成します)

 def create
 ...
   if @order.save
    current_user.order!(@order)
 ....

注文の index.html.erbファイルで user.name をレンダリングしたい

<%= order.orderers.name %>

ただし、HTML では、キャプション「ユーザー」のみをレンダリングします。<%= order.orderers %> を使用すると、user.name を含む完全なハッシュが返されます。

[#<User id: 19, name: "Peter Jackson", email: "foobar@vk.com", remember_token:   "pj6eI2mc2_6G0UbumoEqMA", password_reset_token: nil, password_reset_sent_at: nil, created_at: "2013-01-27 14:10:15", updated_at: "2013-01-27 14:10:28", provider: nil, uid: nil, passport: nil, region: "Zimbabve"]

注文のindex.html.erbでuser.nameをレンダリングする方法はありますか? ありがとう

4

2 に答える 2

1
<%= order.orderers.first.name %> #for the first orderer.

<%= order.orderers.last.name %> #for the last orderer.

注文者ごとに:

<% for o in order.orderers %>
  <%= o.name %>
 <% end %>

よろしく!

于 2013-01-27T14:44:45.013 に答える
1

order.orderers単一の値ではなく配列を返します。name最初の「orderer」を印刷したい場合。次に、次のようにします。

<%= order.orderers.first.name %>
于 2013-01-27T14:43:15.660 に答える