2016-04-06 3 views
2

Я работаю над кодовой базой, с которой я не очень хорошо знаком, в частности с Haml. Мне нужно настроить выпадающий список для выбора пользователя.Как настроить форму Rails для коллекции

У меня есть следующий код в мой контроллер:

def edit 
    @franchise = Franchise.find params[:id] 
    @ab_reps = User.where role: "admin-ab" 
    authorize! :update, @franchise 
end 

У меня есть следующий код в моей форме (что в настоящее время не работает):

= f.select :ab_rep, options_for_select(@ab_reps, f.object.ab_rep), {prompt: "AB Representative"}, {label: false, right_class: "col-sm-10", class: "ab-rep-field"} 

Пара вопросов:

1.) @ab_reps - это массив пользовательских объектов. У меня есть следующий метод в моей модели пользователя:

def name 
[first_name, last_name].compact.join(" ") 
end 

Как я получаю выбрать для отображения имен пользователей вместо пользовательских объектов (которые в настоящее время он делает)?

2.) Является ли моя текущая настройка даже близкой к правильной?

Благодарим за помощь!

ответ

2

Вы близко, вам необходимо предоставить методы для значения параметра и текста опции, а также коллекции, которая в вашем случае - @ab_reps. Кроме того, вы можете предоставить хеш для подсказок и для html_options, таких как имена классов, которые вы сделали.

Rails имеет несколько разных помощников, которые можно использовать для выбранных тегов, включая options_from_collection_for_select. Я часто использовал collection_select, http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

= f.collection_select :ab_rep, @ab_reps, :id, :name, {prompt: "AB Representative"} 
+0

Thank you Margo !!! –

Смежные вопросы