Общий ответ зависит от того, как часто вы собираетесь его использовать:
- помощник: часто используется, но только в представлениях или контроллерах
- контроллер: используется редко и только для определенных действий.
Однако в вашем случае ответ не один из вышеперечисленных, и прекратите пытаться заново изобрести колесо. Около 95% того, что люди пытаются делать с Rails, - это задачи, которые уже сделали другие. Есть очень хороший шанс, что он либо находится в Rails Core, либо существует в виде гема или плагина.
То, что вы пытаетесь сделать, уже сделано и встроено в ядро Rails. Это метод ActionView :: Helpers :: FormOpitionsHelper с именем collection_select
collection_select делает именно то, что вы хотите, он также гораздо надежнее, чем одноцелевой метод.
Имеет вид
collection_select(object, method, collection, value_method,
text_method, select_options = {}, html_options)
value_method и text_method отправляются каждому элементу в коллекции, чтобы получить значение выбора и отображаемый текст для каждой опции выбора. Не обязательно, чтобы оба были именами столбцов.
Используйте это так:
<% form_for @whatever do |form| %>
<%= form.collection_select :user_id, User.all, :id,
:full_name, :prompt => "Select a User" %>
<% end %>