Как правильно передать коллекцию для ввода в Formtastic

Мне нужно передать коллекцию стандартному select вход в Formtastic:

f.input :apple, :as => :select, :collection => Apple.all

Проблема в том, хотя мне нужен Formtastic для доступа к методу, отличному от имени. Теперь это действительно проблема. Я всегда могу передать массив

f.input :apple, :as => :select, :collection => Apple.map { |a| a.format_name }

. Проблема в том, что после этого я получу строки в контроллере вместо идентификаторов, что нежелательно. Вместо этого я попытался передать Hash:

options = Hash.new
Apple.each { |a| Apple.store(a.format_name, a.id) }
f.input :apple, :as => :select, :collection => options

Теперь проблема в том, что, поскольку я использую Ruby 1.8.7, порядок хеширования не определен, и мне, конечно, нужен упорядоченный ввод ...

Я могу представить некоторые решения, но все они требуют ненужного кода.

Есть идеи, как решить это право?

12
задан John Topley 4 September 2010 в 22:13
поделиться