【发布时间】:2014-10-29 00:28:48
【问题描述】:
我有 4 张桌子
- 品牌
- 船
- 电机
- boat_motor_packages
一个品牌有很多电机
一个电机属于一个品牌
aboat_motor_package 属于_aboat and a motor
一艘船有_manyboat_motor_packages
我需要做两件事
- 列出每个boat_motor_package 的品牌
- 列出与每个品牌关联的boat_motor_packages
例如,
我有 1 条船
我有两个品牌——“evinrude”和“mercury”
我有 4 个电机,每个品牌下 2 个
这是我希望它在我的视图模板中的外观
无礼
- 50HP
- 60hp
汞
- 55马力
- 65 马力
这是我的控制器操作
def show
@boat = Boat.find(params[:id])
packages = BoatMotorPackage.where(boat: @boat).all
@package_motor_brands = packages.map { |p| p.motor.brand }
end
@package_motor_brands 为我提供了我需要的所有品牌
现在我需要找到与船和 motor.brand 相关联的电机包
我试图做这样的事情:
-@boat.motor_packages(brand).each do |motor_package|
并在 Boat 类中创建一个如下所示的方法:
def motor_packages(brand)
BoatMotorPackage.where(["boat => ? and motor.brand => ?", self, brand])
end
但这不起作用。我收到一条错误消息,提示 motor.brand 列不存在。这是真的,因为它实际上是在电机台上。有谁知道这样做的正确方法吗?
这是我的观点,以防万一
- @package_motor_brands.each do |brand|
.col-xs-6.motor-group-container
%h5= brand.name
-@boat.motor_packages(brand).each do |motor_package|
.row
.col-xs-12.motor-group
%label.motor-group-name
%input#motorPackageRadios1{:name => "motorPackages", :type => "radio", :value => "#{motor_package.id}"}/
="#{motor_package.motor.hp.to_s}HP #{motor_package.motor.motor_type}"
.motor-group-price="#{motor_package.price_in_cents}"
【问题讨论】:
标签: ruby-on-rails activerecord associations