2009-07-28 19 views
9

Basit soru - select (ActionView :: Helpers :: FormOptionsHelper) gruplandırılmış seçeneklerle nasıl kullanırım?Gruplandırılmış Rails Seçimi

Bir select_tag (ActionView :: Helpers :: FormTagHelper) ile çalışıyorum ama formun geri kalanıyla eşleştirmek için bir seçme etiketi kullanmasını gerçekten isterim. Mümkün mü?

Benim seçenekleri şuna benzer:

[ 
    ['Group 1', ["Item 1", "Item 2", "Item 3"]], 
    ['Group 2',["Item 1", "Item 2", "Item 3", "Item 4"]] 
] 

benim bakış şu anda iken:

%tr#expense 
    %td 
    = f.text_field :value 
    = f.hidden_field :type, :value => mode 

cevap

22

Düzenleme

Düzeltme, sen Diziler kullandığınız beri grouped_options_for_select gerekir

E xample: Bu sarmak için etiketlerini seçmek kendi sağlamak zorunda

<optgroup label="Group 1"> 
    <option value="Item 1">Item 1</option> 
    <option value="Item 2">Item 2</option> 
    <option value="Item 3">Item 3</option> 
</optgroup> 
<optgroup label="Group 2"> 
    <option value="Item 1">Item 1</option> 
    <option value="Item 2">Item 2</option> 
    <option value="Item 3">Item 3</option> 
    <option value="Item 4">Item 4</option> 
</optgroup> 

Not:

grouped_options = [ 
    ['Group 1', 
    ["Item 1", "Item 2", "Item 3"]], 
    ['Group 2', 
    ["Item 1", "Item 2", "Item 3", "Item 4"]] 
] 
grouped_options_for_select(grouped_options) 

aşağıdaki yazdırır. Sadece bu yöntemle sizin için gruplama yapacak seçen işlev yoktur.

Öznitelikten kurtulmalısın. Raylar Way (tm) ne sormak grouped_options_for_select ile select_tag kullanmaktır yapmak:

<%= select_tag "foo[bar]", 
grouped_options_for_select(@bars) %> 

Bu Rails ile dayak yolu kapalı gitmek ne olur. Seçilen bir seçenek de var, İşte

grouped_options = { 
'North America' => [['United States','US'], 'Canada'], 
'Europe' => ['Denmark','Germany','France'] 
} 


<%= select_tag "foo[bar]", 
grouped_options_for_select(grouped_options, 'Denmark') %> 

: Ayrıca yerine iç içe diziler bir Hash kullanabilirsiniz

http://www.ruby-forum.com/topic/185407

+0

Pratikte bunun bir örneği var mı? Bunu dokümanlardayken gördüm, ancak nasıl çalıştığını anlayamıyorum. –

+0

@Neil: bkz. Yukarıdaki – hobodave

+1

Bu, ayrıca, geleneksel bir seçim ile çalışmadığı dışında da iyidir. Select_tag'ı kullanmakta sıkıntı yaşıyorum ve bu, elementin ismini anında denemem ve denemem gerektiği anlamına geliyor. –

6

: :) İşte

Sadece google bulunan bir referans var ('Danimarka')