我不确定我是否正确设置了模型,所以我想向您展示我的想法:
我的模型Car
属于Company
。然后我有一个名为Color
的模型。在这个DB表中存储了所有颜色(红色,蓝色,......)。然后是第4个模型,称为CarColor
。此模型包含两列 - job_id
和color_id
。
在视图中,我希望访问者可以使用复选框选择颜色。
= form_for @car do |f|
.field
= f.label :name
= f.text_field :name
.field
= f.label :location
= f.text_field :location
.field
= fields_for @car_colors do |cc|
...
.field
= fields_for @company do |c|
.field
= c.label :name
= c.text_field :name
.actions
= f.submit 'Save'
class Company < ActiveRecord::Base
has_many :cars
end
class Car < ActiveRecord::Base
belongs_to :company
has_many :car_colors
has_many :c_colors, :through => :car_colors
end
class Color < ActiveRecord::Base
has_many :car_colors
has_many :cars, :through => :car_colors
end
class CarColor < ActiveRecord::Base
belongs_to :car
belongs_to :color
end
保存Cars
+ Company
效果很好,但我不知道如何在视图中添加带颜色的复选框。
修改 关于评论中的主题,我取得了进展。但是,我发现了一个我不知道如何解决的错误。
我正在使用上面显示的模型结构,这就是视图的样子:
- Color.order('name').each do |clr|
= check_box_tag :c_color_ids, clr.id, @car.car_colors.include?(clr), :name => 'car[c_color_ids][]'
= label_tag :c_color_ids, clr.name
这是我得到的错误:
PG::Error: ERROR: relation "car_colors" does not exist
我错过了什么?这种关系怎么不存在?
答案 0 :(得分:0)
好的,我花了一天时间来解决这个问题。该方案是正确的,我的问题是,我创建了一个表名为 car_color 的迁移,而不是 car_colors ......