0

私は使用simple_formしていて、次のサンプルタグを持っています:

<%= f.input :medical_conditions, :label=>false, :collection => medical_conditons, :as => :check_boxes%>

コレクションには約100個のチェックボックスがあります。ただし、ユーザーが1つまたは2つだけを選択した場合でも、次のようにすべてがデータベースに保存されます。

---
- ""
- ""
- ""

medical_conditions私の単純な配列ですapplication_helper

def medical_conditons
t = [
    "Allergies/Hay Fever",
    "Diabetes",
    "Heart Surgery"]
return t
end

medical_conditionsフィールドはフィールド:stringです。

選択した値のみがカンマ区切りで保存されるようにするにはどうすればよいですか。

4

2 に答える 2

1

simple_formの動作ではありません。Railsからです。これを参照してください:http://d.pr/6O2S

于 2011-05-07T01:01:27.500 に答える
1

コントローラでこのようなことを試してください(create / updateメソッドをどのように作成したかを推測してください)...

params[:medical_conditions].delete('') #this will remove the empty strings
@instance.update_attribute(:medical_conditions, params[:medical_conditions].join(','))
#or however you want to save the input, but the key is the .join(',') which will
#create a comma-separated string of only the selected values, which is exactly
#what you're looking for me thinks :-)

それでうまくいく場合は、パラメータをフォーマットするプライベートヘルパーメソッドを作成して、#create、#update、またはその他の必要な場所で使用できるようにすることを検討します。これにより、クラッドアクションで物事が少しクリーンになり、より「レールっぽい」状態に保たれるはずです。

于 2011-07-13T23:49:16.340 に答える