2016-06-17 8 views
0

私はSimpleFormを使用していると私はこのようになります入力を持っている:これは、新しい質問のために働くSimpleFormで既存のオブジェクトに対して選択された値を事前に選択するにはどうすればよいですか?

[60] pry(main)> q.language 
=> "ruby" 
[64] pry(main)> w.language 
=> "csharp" 

ので自動選択「ルビー:このようなオブジェクトを格納し

<%= f.input_field :language, collection: Rouge::Lexer.all.map(&:tag).sort, as: :select, selected: "ruby", class: "form-control" %> 

" どっちがいい。

しかし、ユーザーがレコードを編集する場合は、このフィールドにこのオブジェクトに格納されている言語を事前に選択します。

上記のオブジェクトqの場合は、 "ruby"があらかじめ選択されている必要がありますが、wオブジェクトの場合は "csharp"があらかじめ選択されています。

languageは文字列でIDではなく、newインスタンスのデフォルト値が必要な場合はどうすればよいですか?

答えて

1

あなたが言うことができます。

selected: @question.language || 'ruby' 

をプロパティがモデルに存在する場合'ruby'にデフォルト設定されますされていない場合それは最初に、チェックします。

テンプレートからこのロジックを移動する場合は、モデル、プレゼンター、またはform objectの候補が候補になります。

+0

パーフェクト。これは私が探していたものです。ありがとう! – marcamillion

関連する問題