Структура данных для grouped_options_for_select Ruby on Rails
Структура данных для использования в grouped_options_for_select Ruby on Rails.
В официальной документации Ruby on Rails приведены буквально следующие примеры:
Sample usage (Array):
grouped_options = [ ['North America', [['United States','US'],'Canada']], ['Europe', ['Denmark','Germany','France']] ] grouped_options_for_select(grouped_options)
Sample usage (Hash):
grouped_options = { 'North America' => [['United States','US'], 'Canada'], 'Europe' => ['Denmark','Germany','France'] } grouped_options_for_select(grouped_options)
Possible output:
<optgroup label="Europe"> <option value="Denmark">Denmark</option> <option value="Germany">Germany</option> <option value="France">France</option> </optgroup> <optgroup label="North America"> <option value="US">United States</option> <option value="Canada">Canada</option> </optgroup>
Все логично, все вроде бы правильно. Но иногда создается впечатление, что как-будто сами создатели Ruby on Rails либо намеренно, либо по забывчивости недоговаривают или дают не вполне корректные или не полные рекомендации.
В примере с использованием Hash была бы более логична для полного примера следующая структура, которая, кстати, прекрасно работает на самом деле:
grouped_options = { 'North America' => { 'United States' => 'US', 'Canada' => 'Canada' }, 'Europe' => ['Denmark', 'Germany', 'France'] } grouped_options_for_select(grouped_options)
Я лишь хочу показать, что возможно использование Hash, а не только Array. Единственная проблема, которая возникает при использовании хэша - происходит сортировка элементов optgroup.