スタイル作成フォームを送信するときに、いくつかの機能を備えた新しいスタイルを作成したいと思います。機能は、データベースの機能テーブルから入力された複数選択ボックスから選択されます。スルーテーブルは、複数選択から選択した機能に応じて、適切に更新する必要があります。
Railsコンソール内で次のことができます。
@style = Style.first
@style.feature_ids = ['','2','4','6']
上記を入力すると、適切なstyle_idとfeature_idの3行で更新されたスルーテーブルが表示されます。
私のスタイル作成フォームには、次のものがあります。
<%= m.input :feature_ids, :label => "Features", :collection => @features, :input_html => { :multiple => true } %>
フォームを送信すると、次のPGエラーが発生します。
PG::Error: ERROR: column "feature_id" is of type integer but expression is of type character varying at character 96
HINT: You will need to rewrite or cast the expression.
: INSERT INTO "stylefeatures" ("created_at", "feature_id", "style_id", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"
paramsハッシュから:
{"utf8"=>"✓",
"authenticity_token"=>"lkdI9jhlhPW1P2Tyb8jFMKFM/kVXvgcJfSkL0qNH7xk=",
"style"=>{"name"=>"123",
"feature_ids"=>["",
"2",
"4",
"6"],
"commit"=>"Create Style"}