Подтвердить что ты не робот

Rails collection_select vs. select

collection_select и select Помощники Rails: Какой я должен использовать?

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

4b9b3361

Ответ 1

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

collection_select(:post, :author_id, Author.find(:all), :id, :name)

Ответ 3

И в отношении 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>

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

 Fruit.types[obj.type]

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