2012-04-24 33 views
11

の配列からドロップダウン:Railsの - 私はこのような配列持つ文字列

['New York', 'Los Angeles'] 

をそして、私はこのような形でこれらの値を持つ選択/オプションを生成することができるようにしたい:

<%= form_tag filter_city_path, :method=> get do %> 
    <%= select_tag "city", @list_of_cities %> 
<% end %> 

これは機能しません。ご覧のとおり、都市というURLをURLに渡したいと思います。

答えて

15

このための私の方法は、モデルの定数として配列を構築し、定数にリストされたオプションへの確認を強制し、それをビュー

class Show < ApplicationRecord 

    DAYS = [ "monday", "tuesday", "wednesday", "thursday","friday", "saturday","sunday"] 

    validates :day, inclusion: DAYS 

end 

あなたはそのフィールドのオプションは、コンテンツなしで提出することにしたい場合は、 `allow_blank呼び出す必要があります:だけでなく、真の」検証インチあなたはそれが曜日でも意味がありませんこれは(事前にソートしたい場合

<%= select_tag "day", options_for_select(Show::DAYS) %> 

または

<%= select_tag "day", options_for_select(Show::DAYS.sort) %> 

:それが設定されたら、あなたはそうと、フォームでビューを移入するために定数を呼び出すことができます...)

+7

可能であれば、長距離のスペルではなく、プログラムで配列を変換してみてください。 2番目のインスタンスで 'york'を大文字にしない理由を説明しました。 'cities.collect {| c | [c、c]} 'はそれを拡張する仕事をします。 – tadman

0

あなたの配列に十分な引数がないようです。 this guideを参照してください。

通常のオプションは、この方法でフォーマットする必要があります、

[['Lisbon', 1], ['Madrid', 2], ...] 

が値12に注意してくださいなどあなたは

<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %> 
0

のようにヘルパーをoptions_for_select使用する必要が

関連する問題