1

Rails 为包含具有 has_many/belongs_to 关系的元素的数据模型实现视图的方法是什么?

这是我想以列表形式显示的模型:驱动程序

class Driver < ActiveRecord::Base
  ...
  has_many :cars
end

以下是每个驱动程序下方应列出的模型:

class Car < ActiveRecord::Base
  ...
  belongs_to :driver
end

我想显示一个司机名单和他们各自的汽车。

这提出了两个问题:

1. 如何最有效地在一页中列出两者?我的控制器和视图应该是什么样子?如果我只是这样做

    @drivers = Driver.all

我似乎无法访问视图中的汽车。

2. 如果我只列出驱动程序,并根据请求使用 AJAX 加载汽车,我会使用 cars_controller 和 drivers_controller 吗?我将如何为这种情况编写测试?

4

2 回答 2

1

1)如果您有路线,您可以直接访问它

路线.rb

  resources :drivers do
    resources :cars
  end

查看可用路线呼叫rake routes

然后,当您初始化所有驱动程序时,@drivers = Driver.all您可以访问每个驱动程序并driver.cars使用.each

因此,在视图中,@drivers.each do |driver|您可以这样做driver.cars.each.. 如果它是空的,您可以用driver.cars.build

效率检查http://www.ibm.com/developerworks/web/library/wa-rails3/https://github.com/orslumen/record-cache

2)您可以使用驱动程序控制器,除非您想将其用于特定页面。

由于您可以从页面访问驱动程序的关系,并且您在技术上处于具有不同功能的驱动程序页面中,因此请将其保存在 drivers_controller 中。如果你觉得你在做其他事情,你可以为此创建一个新的控制器。

于 2012-06-22T15:33:14.603 回答
1

扩展您已有的内容:

//controller
  @drivers = Driver.all

  //view
  @drivers.each do |d|
   puts d.messages
   # OR
   d.messages.each do |m|
    puts m.title
   end
  end

可以反过来做同样的事情@cars = Car.all

于 2012-06-22T15:24:03.823 回答