2016-05-19 9 views
0

内のテキストをカスタマイズします。 collection_selectを使用しては、私はこのような名前のドロップダウンを持っているcollection_selectドロップダウンを持っているcollection_selectドロップダウン

等...

が、このことは可能です

ポール(ゴルファー) ケビン(船員):ドロップダウンで、私は次のようなそれらの人物の名前とグループを表示したいです?

+0

"#{:name}(#{id.group})"のような文字列補間を使用するといいと思います。 – myself

答えて

3

をこれが実際に行うのは非常に単純です。プルしているモデルにメソッドを書くだけで、ドロップダウンに必要な文字列が書式設定されます。だから、documentationから:

class Post < ActiveRecord::Base 
    belongs_to :author 
end 

class Author < ActiveRecord::Base 
    has_many :posts 

    def name_with_initial 
    "#{first_name.first}. #{last_name}" 
    end 
end 

次に、あなたのcollection_selectでは、単にあなたの前に現れた名前、または何を呼び出すのではなく、そのメソッドを呼び出します。

collection_select(:post, :author_id, Author.all, :id, :name_with_initial) 

後で明らかに見えます。

+0

ポストに関連付けられている現在の作者にドロップダウンを埋め込ませる方法はありますか?私は試しました:成功なしで選択しました。 –

+0

form_forフォームビルダを使用している場合は、更新/編集ビューでデータベースに既に存在する値が自動的に入力されます。あなたはform_forを使いたいでしょう:post {| f | f.collection_select ...} – Arel

+0

私はそれが本当に良い習慣だと思う。それはちょうどヘルパーを役に立たなくします – Batbayar

0

あなたが試してみました:

<%= f.collection_select(:person_id, Person.all.collect { |p| ["#{p.name}(#{p.group})", p.id ] }) %> 
+0

うん、ちょうどそれを試してみました。エラーを取得しています:引数の数が間違っています(指定2、予想4.6) – Arel

関連する問題