2016-07-04 26 views
0

我是Rails的新手,並試圖創建一個C2C市場應用程序,以瞭解rails如何工作並在稍後啓動一些真實項目。如何管理RoR中的嵌套關​​系?

這個想法是,用戶可以下令到其他用戶。訂單與用戶的打印機相關(您選擇用戶打印/訂購頁面)。打印機也有很多顏色可供打印

現在,我的堆棧非常基本。

我想在Orders控制器中的/訂單頁面上顯示擁有所有者名稱和顏色的所有打印機的列表。預先感謝您的任何想法,我怎麼能做到這一點

class User < ActiveRecord::Base 
    has_many :printers, dependent: :destroy 
    has_many :orders, dependent: :destroy 
end 


class Order < ActiveRecord::Base 
    belongs_to :user 
    validates :user_id, presence: true 
end 


class Printer < ActiveRecord::Base 
    belongs_to :user 
    validates :user_id, presence: true 
    validates :model, presence: true, allow_nil: true 

    has_many :materials, dependent: :destroy 
end 

訂單指數動作控制器(/訂單)

class OrdersController < ApplicationController 
    def index 
    @printers = Printer.all 
    end 
end 

而且index.html.erb

<% @printers.each do |p| %> 
      <div class="col-xs-9"> 
      <div><%= "USERNAME HERE" %></div> <!--Do not know how to display parent's model here? --> 
      <div><%= p.model %></div> <!--Works fine--> 
      <div><%= p.colors.each do |c| c.color end %></div> <!--Display array instead of strings--> 
      </div> 
      <div class="col-xs-3"> 
      <button>Order</button> 
      </div> 
<% end %> 

簡體schema.db

ActiveRecord::Schema.define(version: 20160627132435) do 

    create_table "colors", force: :cascade do |t| 
    t.string "color" 
    t.integer "printer_id" 
    end 

    create_table "orders", force: :cascade do |t| 
    t.string "price" 
    t.string "status" 
    t.integer "user_id" 
    end 

    create_table "printers", force: :cascade do |t| 
    t.string "model" 
    t.integer "user_id" 
    end 

    add_index "printers", ["user_id"], name: "index_printers_on_user_id", using: :btree 

    create_table "users", force: :cascade do |t| 
    t.string "first_name" 
    t.string "last_name" 
    end 

    add_foreign_key "orders", "users" 
    add_foreign_key "printers", "users" 
end 

回答

1

我認爲你應該可以這樣做:

<% @printers.each do |p| %> 
      <div class="col-xs-9"> 
      <div><%= p.user.first_name %></div> <!--Do not know how to display parent's model here? --> 
      <div><%= p.model %></div> <!--Works fine--> 
      <div><% p.colors.each do |c| 
       <%= c.color %> 
      <% end %></div> <!--Display array instead of strings--> 
      </div> 
      <div class="col-xs-3"> 
      <button>Order</button> 
      </div> 
<% end %> 
+0

謝謝。 p.user.first_name運行良好。很容易)但顏色給我這個http://joxi.ru/a2XWXvZtMN4Nmg-任何想法,爲什麼這可能是? –

+0

更新了修復的答案 – oreoluwa

+0

太棒了。感謝您的幫助! –