rails collection_select против select - PullRequest
38 голосов
/ 13 ноября 2009

collection_select и select Rails помощники: какую мне использовать?

Я не вижу разницы в обоих направлениях. Оба помощника берут коллекцию и генерируют теги параметров внутри тега выбора. Есть ли сценарий, в котором collection_select лучше, чем select? или что-то мне здесь не хватает?

Ответы [ 3 ]

70 голосов
/ 13 ноября 2009

collection_select предназначен для использования, когда список элементов представляет собой массив объектов ActiveRecord. collection_select построен поверх select, поэтому это удобный метод, когда вам нужно отобразить коллекцию объектов, а не массив строк.

collection_select(:post, :author_id, Author.find(:all), :id, :name)
1 голос
/ 23 августа 2016

А что касается select, вы можете использовать его с Hash . Я использовал его с ENUM.

# In a hypothetical Fruit model
enum types: { 'Banana' => 0, 'Grape' => 1, 'Mango' => 2 }

# In the view
f.select :type, Fruits.types.invert

Обратите внимание, что мне пришлось использовать инвертировать , чтобы показать правильное значение в опции:

<select>
  <option value="0">Banana</option>
  <option value="1">Grape<option>
  <option value="2">Mango</option>
</select>

Для ссылки на него в файле шоу вы можете использовать Fruit.types, и это вернет наш предыдущий хэш. Таким образом, вы можете сделать:

 Fruit.types[obj.type]

Последнее примечание: Вы можете использовать символы вместо цифр, если вы предпочитаете enum types: { 'Banana' => :banana, ... и вы получите <option value="banana">Banana</option>

1 голос
/ 13 ноября 2009

Я написал кое-что об этом некоторое время назад, посмотрите на http://nasir.wordpress.com/2007/11/02/not-binding-your-selection-list-to-a-particular-model-in-rails/

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...