如何通过find方法调用变量

时间:2011-01-26 18:47:18

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

我是ruby on rails的新手,这就是问题所在:

我正在尝试将一个关于汽车信息的循环中的客户端名称。汽车数据包含一个名为“belongs_to”的列,它是客户端的ID。

重要的一行:<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

你们会怎么做?

4 个答案:

答案 0 :(得分:7)

您可以使用模型来实现此目的:

class Car < ActiveRecord::Base
  belongs_to :client
end

class Client < ActiveRecord::Base
  has_many :cars
end

并在您的视图中:

@car.client

修改

或反过来说:

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

答案 1 :(得分:4)

belongs_to不是一个非常好的列名。有一种名为“belongs_to”的关联类型,您可以在其中建立模型之间的关系,其中一个“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

然后你可以这样做:

client = car.client

查看Ruby on Rails Guides - A Guide to Active Record Associations

答案 2 :(得分:2)

尝试

Client.find(car.belongs_to)

你真正想做的事情是让你的Car模型有这样的东西

belongs_to :client

您的Client型号

has_many :cars

然后,您只需致电@car.client即可获得所需内容。

答案 3 :(得分:0)

我猜你可以这样做:

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

在汽车模型中,我猜你已经有了:

belongs_to :client