モデルを正しく設定しているかどうかわからないので、私の考えをお見せしたいと思います。
Car
に属するモデルがありCompany
ます。次に、というモデルがありColor
ます。このDBテーブルには、すべての色(赤、青、...)が格納されています。そして、と呼ばれる4番目のモデルがありCarColor
ます。このモデルには、2つの列-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
私は何が欠けていますか?どのように関係が存在することはできませんか?