2016-05-20 3 views
0

simple_formを使用して、複数のフィールドといくつかのドロップダウン値を含むフォームを送信しています。フォームがエラーでレンダリングされると、すべてのテキストフィールドが記憶されますが、ドロップダウン値の一部がリセットされます。すべての値は強いパラメーターで許可され、validate_presence_of検証に合格します。Rails:エラーが発生したフォームのレンダリング時にすべてのドロップダウン値が記憶されないフォーム

コレクションは、クラスメソッドを使用して私のモデルで作成されます。次のように:

私の形で
def self.options 
['One','Two','Three'] 
end 

とロードを使用して:それはエラーで返されたときに

<%= f.input :dropdown, collection: MyModel.options, include_blank: false %>

を私は正しくフォームオブジェクトを何をレンダリングすればよいですか?

+0

自動的にsimple_formで行う必要があります。保存が試行された後、モデルには属性がありますか? –

+0

必要はありませんが、あなたの入力に 'selected:@ model.dropdown'オプションを渡すことができます –

答えて

1
f.select :dropdown, MyModel::myoptions, {include_blank: false} 

及び方法は試してみて、私に知らせてください。この

def self.myoptions 
    [["One","One"],["Two","Two"],["Three","Three"]] 
    end 

ようにする必要があります。

+0

あなたの答えをありがとう。 MyModel.myoptionsとMyModel :: myoptionsの違いは何ですか?オプションをサブアレイに入れることをお勧めするのはなぜですか? – Matthias

+0

メソッドを定義するときに 'self'を使用しているためです。クラスメソッドにアクセスするには、::を使用し、使用するインスタンスメソッドにアクセスする必要があります。 Rubyで – uday

+0

'f.select'がどのように動作するのですか? 1つの値は表示用であり、もう1つは '

関連する問題