options_from_collection_for_select возвращает строку тегов параметров, которые были скомпилированы путем итерации по коллекции и назначения результата вызова value_method в качестве значения параметра и text_method в качестве текста параметра.
options_from_collection_for_select(Account.all, 'id', 'name')
Означает, что вы просматриваете все записи учетной записи и называете account.id
как value_method
и account.name
как text_method
для каждой записи. Вы не можете использовать этот помощник для архивации того, что вы хотите, потому что ожидаемая опция выбора включает в себя индексный номер, а также
options_for_select удовлетворяет ваши потребности лучше. Замените options_from_collection_for_select(...)
деталь на приведенный ниже код
options_for_select(Account.all.each_with_index{ |acc, index| [acc.id, "#{index+1} - #{acc.name}"] })
ПРИМЕЧАНИЕ:
- Вы должны переместить
Account.all.each_with_index{ |acc, index| [acc.id, "#{index+1} - #{acc.name}"] }
в вспомогательный метод - Также вы можете установить выбранное значение селектора, передав
id
в качестве второго параметра options_for_select()
ОБНОВЛЕНИЕ:
Если номер префикса является идентификатором записи, тогда можно использовать options_from_collection_for_select
. Вам просто нужно объявить метод экземпляра внутри модели Account, как показано ниже:
def name_with_id_prefix
"#{id} - #{name}"
end
Затем в представлении вызовите новый метод вместо 'name'
options_from_collection_for_select(Account.all, 'id', 'name_with_id_prefix')