2011-01-26 10 views
1

ルビーの新機能です。findメソッドで変数を呼び出す方法

車の情報についてループ内にクライアント名を取得しようとしています。 carデータには、クライアントのIDである "belongs_to"という列があります。

重要な行:<td><%= @client.find(car.belongs_to) %></td>

コントローラ:

def index 
    @cars = Car.all 

    @client = Client.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @cars } 
    end 
    end 

どのようにあなたたちはこれをしますか?

答えて

7

あなたがこれを達成するためにモデルを使用します。

class Car < ActiveRecord::Base 
    belongs_to :client 
end 

class Client < ActiveRecord::Base 
    has_many :cars 
end 

あなたのビュー内:

@car.client 

EDIT

または他の方法でラウンド:

@client.cars 
# to iterate over them: 
@client.cars.each do |car| 
    # do something with car 
end 
+0

を見て非常に良いではどうもありがとうございました! – criticerz

2

しかし、あなたのCarモデルがこの

belongs_to :client 

のようなものを持っており、あなたのClientモデルはあなたが次に

has_many :cars 

を持っていている、あなたが本当に何をしたいのか

Client.find(car.belongs_to) 

をお試しください@car.clientに電話して、あなたが手に入れたものを手に入れることができます蟻。

0

私はあなたが何かやることができると思います:

@cars.each do |car| 
    car.client 
end 

や車のモデルでは、私はあなたがalredy持っていると思います:

belongs_to :client 
4

belongs_toのは非常に良い、列名ではありません。

class Car < ActiveRecord::Base 
    belongs_to :client # there is a column on the cars table called "client_id" 
end 

class Client < ActiveRecord::Base 
    has_many :cars 
end 

次に、あなたが行うことができます:あなたはモデル間の関係を確立することができます「belongs_toの」と呼ばれる関連付けタイプ、などの他のモデルは、「BELONGS_TO」その一つがあります:

client = car.client 

Ruby on Rails Guides - A Guide to Active Record Associations

関連する問題