Я упомянул в вопросе, что элементы не являются объектами в базе данных, это просто строки, например:
the_array = ['first', 'second', 'third']
Благодаря Лихтамбергу, я сделал это так:
f.select(:test, options_for_select(Array[*the_array.collect {|v,i| [v,the_array.index(v)] }], :selected => f.object.test)) %>
Что дает желаемый результат:
<option value="0">first</option>
<option value="1">second</option>
<option value="2">third</option>
Я не использовал Hash
, потому что порядок важен, и моя версия ruby не превышает 1.9