12

Formtasticの標準のselect入力にコレクションを渡す必要があります。

f.input :apple, :as => :select, :collection => Apple.all

問題は、名前とは異なるメソッドにアクセスするためにFormtasticが必要なことです。今、これは本当に問題です。私はいつでも配列を渡すことができます

f.input :apple, :as => :select, :collection => Apple.map { |a| a.format_name }

問題は、この後、不要なIDの代わりにコントローラーで文字列を取得することです。代わりにハッシュを渡そうとしました:

options = Hash.new
Apple.each { |a| Apple.store(a.format_name, a.id) }
f.input :apple, :as => :select, :collection => options

問題は、Ruby 1.8.7を使用しているため、ハッシュの順序が指定されておらず、もちろん順序付けられた入力が必要なことです...

私はいくつかの解決策を想像することができますが、それらのすべては不必要なコードを必要とします。

この権利を解決する方法はありますか?

4

3 に答える 3

16

試す:

f.input :apple, :as => :select, :collection => Apple.all, :label_method => :format_name, :value_method => :id
于 2010-09-05T08:33:29.777 に答える
4

正式なドキュメントには直接の表示はありませんが、コレクションはネストされた配列にすることもできるため、問題は次の方法で解決されます。

f.input :apple, :as => :select, :collection => Apple.map { |a| [ a.format_name, a.id ] }
于 2010-09-04T15:54:15.077 に答える
1

これが今の正しい方法です:

f.input :apple,
        as: :select,
        collection: Apple.pluck(:format_name, :id)

これはcollection、[name、id]タプルの配列に設定されます。簡単!

間もなく廃止される方法:

member_labelオプションを使用します。例:

f.input :apple,
        as: :select,
        collection: Apple.all,
        member_label: :format_name

ドキュメントはここにコードコメントであります

于 2017-03-22T02:34:56.817 に答える