Raylar

2012-04-24 17 views
11

böyle bir dizi var dizeleri bir diziden açılır:Raylar

['New York', 'Los Angeles'] 

Ve hiç böylesine bir biçimde olanlar değerlere sahip bir seçme/seçeneği oluşturmak mümkün istiyorum:

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

Ancak bu çalışmıyor. Gördüğünüz gibi, seçiminizi URL'de şehir olarak geçmek istiyorum.

cevap

15

Bunun için benim yöntemimi dizide sabit bir model olarak kurmak, sabit olarak listelenen seçeneklere onaylamak ve görünüm

class Show < ApplicationRecord 

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

    validates :day, inclusion: DAYS 

end 

söz konusu alan için seçenek içeriksiz sunulacak istiyorsanız `allow_blank aramak gerekecek: yanı doğrudur' doğrulamada.

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

veya

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

haftanın günleri ile hiçbir mantıklı olan (o ön ayrımı isterseniz: o kurulduktan sonra sen şekilde formda görünümünü doldurmak için sabit çağırabilir ...)

+7

Mümkün olduğunda, dizilerinizi uzun zamandır yazarak yerine programsal olarak dönüştürün. İkinci örnekte 'york' un neden aktifleştirilmediğini açıkladınız. şehirler.collect {| c | [c, c]} 'genişleme işini yapardı. – tadman

0

Dizininizde yeterli argüman yok gibi görünüyor. Lütfen this guide'a bakın.

tipik seçenekleri bu şekilde biçimlendirilmiş olması gerekir:,

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

değerini 1, 2 dikkatinizi çekeriz vb

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

gibi yardımcı options_for_select kullanmak gerekir