Выбор сгруппированной коллекции на одной модели / столе?

Можно ли сделать grouped_collection_select на одной модели? Большинство примеров, которые я видел, используют две модели. Например, этот Railscast: http://railscasts.com/episodes/88-dynamic-select-menus-revised

У меня есть модель Venue с полями для названия места и города (среди прочего). В настоящее время мой выбор места проведения огромен, и я хотел бы группировать по городам. Нужно ли перемещать города в отдельную модель?

1 ответ

Где вы храните города сейчас? В любом случае, может быть лучшим решением иметь города в другой модели, но это зависит от других вещей, например, если вы считаете, что данные о городах со временем изменятся. Однако вы можете легко добавить сгруппированный выбор без новой модели. Попробуйте что-то вроде этого:

<% form_for @venue do |f| %>
   <%= f.select :town, grouped_options_for_select(@towns) %>
   ...

Тем не менее @towns должен быть и 2-мерный массив, как это

[
  ["Group1", 
    ["Town1", "Town2", "Town3"]
  ], 
  ["Group2", 
    ["Town4", "Town5", "Town6"]
  ]
]

Вы можете увидеть больше здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

В противном случае, если у вас есть пример некоторых данных для городов и вашей текущей формы, могу ли я помочь вам больше:)

Другие вопросы по тегам