2017-10-11 13 views
0

に代わりIdの名前を示しaccountsitemsと私はview/items/show.html.erbページ上のアカウントテーブルからではなくidbuisness_nameshowしたいと思います。Railsは:私は2つのテーブルを、持っているショーのページ

現在、モデル間の関連はありませんが、itemsテーブルにaccount_idという列があります。

create_table "accounts", force: :cascade do |t| 
    t.string "buisness_name" 
    t.string "web_site" 
    t.string "phone_number" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
end 

create_table "items", force: :cascade do |t| 
    t.string "title" 
    t.text "description" 
    t.string "image" 
    t.decimal "price" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.integer "category_id" 
    t.json "attachments" 
    t.integer "account_id" 
end 

私はこれを経由してaccount_idを取得しています:<%= @item.account_id %>が、私が代わりにbuisness_nameを表示したいと思います。

+0

JFYI、それは "ビジネス"ビジネス " –

+0

"現在、私はモデル間の関連付けがありません " - これは修正する必要があります。 –

答えて

2

@Sergio Tulentsevは、すでに私はテーブルから気づいたので、私は私の答えを更新し

あなたに言ったよう

<% if @item.account %> 
    <%= @item.account.buisness_name %> 
<% end %> 

は、business_nameするViewには、この

class Item < ActiveRecord::Base 
    belongs_to :account 
end 

のようなものを試してみてくださいaccount_idにはnot nullの制約がありません。

2

あなたが

<%= @item.account_id %> 

になり、アカウントを取得する恐ろしい方法がある場合は多くの賢く

<%= Account.find_by(id: @item.account_id).try(:buisness_name) %> 

は...ビューで

class Item 

    belongs_to :account 

    delegate :buisness_name, to: :account, prefix: true, allow_nil: true 

そしてだろう

<%= @item.account_buisness_name %> 
+3

そのデリゲートに対して 'prefix:true'を使いたいかもしれません。アイテムには通常ビジネス名はありません。 :) –

+0

@SergioTulentsev良い点。 – SteveTurczyn

関連する問題