2012-09-28 3 views
0

У меня возникла проблема с использованием collection_select для создания выпадающего меню. все гиды говорят, что этоrails 3.2 collection_select не загружает значения

<%= collection_select(:page, :user_id, @users, :id, :full_name) %> 

должен работать, но когда я запускаю сервер, вместо списка пользователей появляется это просто пустой список. Ассоциации состоят в том, что страница принадлежит пользователю, а пользователь имеет много страниц, и есть пользователи в базе данных, которые должны быть получены в контроллере, когда я вызываю @users = User.all

Любая идея о том, как получить падение вниз для заполнения?

+0

У пользователя есть 'поле full_name' или метод имеет' full_name'? & является ли это стандартным синтаксисом 'form_for'? – Amar

+0

он находится внутри form_for, поэтому я могу отправить его с другой информацией, но он не использует эту форму, поэтому я могу назначить ее другой модели. у пользователя есть поле full_name из-за метода в модели, который объединяет имя и фамилию, используя «# {first_name} # {last_name}" –

+0

Ваш код кажется правильным '<% = f.collection_select (: user_id, @users,: id,: full_name)%> 'попробуйте это, если оно находится в модели страницы, – Amar

ответ

1

загружаете вы что-нибудь в переменной @users в вашем PageController?

Если она не принадлежит (семантический) к контроллеру, сделать это вспомогательный метод

module PagesHelper 
    def users_for_select 
    User.all 
    end 
end 

и в представлении

<%= collection_select(:page, :user_id, users_for_select, :id, :full_name) %> 

Проверьте также в консоли, что :full_name является правильным методом экземпляра пользователя

User.first.full_name 

Редактировать: предложение для full_name метод с запасом

+0

Да, я использовал @users = User.all в моем контроллере, я попытался использовать метод помощника, который вы написали, но произошла одна и та же проблема, и никакие значения не генерируются. –

+1

Можете ли вы опубликовать содержимое метода 'full_name' для класса User? – rewritten

+0

Или просто вывести вывод 'User.all.map (: & full_name)' – rewritten

1

я тоже прошел через apidocuments,

где-то говорит, что выбор не сделан, не включая: приглашение или: include_blank если ваш метод вызова отсутствует,

попробовать <%= collection_select(:page, :user_id, @users, :id, :full_name, :prompt=>true) %>

+0

Я попробовал добавить приглашение => true однако ничего не произошло, это код html, который генерируется из кода. <выберите идентификатор = имя "page_user_id" = "страница [идентификатор_пользователя]"><параметр значение = "1"> <значение параметра = "2"> <параметр значение = "3"> <опция значение = "4" выбрано = "выбрано"> <параметр значение = "5"> <параметр значение = "6"> значение <опция = "7"> ' –

+0

я и отображается 7 пользователей, я использовал @users, хотя как .all бросил метод не существует ошибки. –

+0

@Kevin oh, значение идет, text_method не работает, и поэтому вы не можете увидеть полное_имя. Что-то должно быть не так с full_name, попробуйте напечатать @ users.full_name один раз и посмотреть, что он печатает '<% = @users.full_name%> ' – user1455116

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