1

スタイル作成フォームを送信するときに、いくつかの機能を備えた新しいスタイルを作成したいと思います。機能は、データベースの機能テーブルから入力された複数選択ボックスから選択されます。スルーテーブルは、複数選択から選択した機能に応じて、適切に更新する必要があります。

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"}
4

1 に答える 1

1

あなた@featuresは文字列のコレクションです、それを整数に変更してください、そしてあなたは良いでしょう(それはあなたのデータベースが不平を言っていることです)。

于 2012-05-22T09:34:48.063 に答える