【问题标题】:How to render field from another associated table? Ruby on rails如何从另一个关联表中呈现字段?轨道上的红宝石
【发布时间】:2013-01-27 14:25:17
【问题描述】:

我有 3 个模型:User、Order 和 UserOrder

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

我想在 orders 的 index.html.erb 文件中呈现 user.name

<%= order.orderers.name %>

但在 HTML 中它只呈现标题“用户”。如果我使用 它会返回完整的哈希,包括 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? 谢谢

【问题讨论】:

    标签: html ruby-on-rails ruby-on-rails-3 associations


    【解决方案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 %>
    

    问候!

    【讨论】:

    • 谢谢!!第二部分很有帮助
    【解决方案2】:

    order.orderers 将返回一个数组而不是单个值。如果要打印第一个“订购者”的name。然后做类似的事情:

    <%= order.orderers.first.name %>
    

    【讨论】:

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