Rails3.2.0.rc2を使用しています。私が持ってModel
いる私は、静的持って、Array
私は、ユーザーがのサブセットを選択できるように、フォームをアップ提供していますArray
し、1つの列に格納されているデータベースにその選択を保存しますModel
。Array
Railsがユーザーの選択をYamlに正しく変換している(そしてその列を読み取るときに配列に戻る)データベース列でserializeを使用しました。複数選択フォーム入力を使用して選択を行っています。
私の問題は、現在の方法では、サーバーに送信されるときにユーザーのサブセット配列の最初の要素が常に空白になることを除いて、すべてが期待どおりに機能することです。
これは大したことではなく、事後にそれを切り取るコードを書くことはできますが、デフォルトのRailsの動作が意図的に行われるとは思えないため、何らかの構文エラーを起こしているように感じます。なんらかの理由なしにこの空白の要素を追加します。何かを見逃したか、ある種の設定を無効にするのを忘れたに違いありません。私が欠けているものを理解するのを手伝ってください(または、私がインターチューブで見つけたものよりも詳細にこれを説明しているいくつかの良いドキュメントを教えてください)。
MySQLデータベーステーブル 'モデル':
subset_array
TEXTフィールドであるという名前の列が含まれています
クラスモデルには、次の設定が含まれています。
serialize :subset_array
ALL_POSSIBLE_VALUES = [value1, value2, value3, ...]
モデルを編集するためのフォームには、次の入力オプションが含まれています。
f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array
クライアントからサーバーへのPUTは次のようになります。
- value1とvalue3のみが選択されていると仮定します
"model" => { "subset_array" => ["", value1, value3] }
データベースの更新は次のようになります。
UPDATE 'models' SET 'subset_array' = '--- \n- \"\"\n- value1\n- value3\n'
ご覧のとおり、送信されてデータベースに設定されている配列には、この余分な空白の要素があります。どうすればそれを取り除くことができますか?f.select
通話に欠けているパラメータはありますか?
どうもありがとうございました:)
編集:これは、f.select
ステートメントから生成されたHTMLコードです。私の問題の原因である可能性のある隠された入力が生成されているように見えますか?なぜそこにあるのですか?
<input name="model[subset_array][]" type="hidden" value>
<select id="model_subset_array" multiple="multiple" name="model[subset_array][]" selected="selected">
<option value="value1" selected="selected">Value1</option>
<option value="value2">Value2</option>
<option value="value3" selected="selected">Value3</option>
<option...>...</option>
</select>
f.select
生成されているHTMLスニペットを投稿できますか?また、この動作は作成時でも発生しますか、それとも更新時だけですか?