2013-09-10 1 views
0

Я пытался использовать это на моем тестеFormtastic - Почему не работает

<%= f.input :user, :label => 'Usuario: ' , :as => :select , :collection => @users , :include_blank => true %> 

И не работал ....

Но когда переключатель на:

<%= f.input :user_id, :label => 'Usuario: ' , :as => :select,  :collection => Hash[@users.map{|b| [b.nickname,b.id]}] , :include_blank => true%> 

It работает? Кто-нибудь знает, почему?

я все это вместе по коду:

<%= f.input :user, :label => 'Usuario: ' , :as => :select , :collection => @users , :include_blank => true %> 

<%= f.input :user_id, :label => 'Usuario: ' , :as => :select,  :collection => Hash[@users.map{|b| [b.nickname,b.id]}] , :include_blank => true%> 

Но первый один не работал (я так и сделал, чтобы увидеть, если был somente неправильно в переменной @user) ..

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

ответ

0

Из formtastic документации: Многие входы обеспечивают набор опций на выбор (как :select, :radio, :check_boxes, :boolean). Во многих случаях Formtastic может найти выбор через ассоциации моделей, но если вы хотите использовать свой собственный набор вариантов, то опция :collection - это то, что вы хотите. Вы можете передать в массив объектов, массив строк, в Hash ...

Вы можете проверить documentation

также collection будет ожидать получить хэш или массив, но когда вы передаете @user передаче экземпляра переменная вашей модели, и это не сработает.

+0

** ** Пользователь ** переменная является возвратом Model.all (User.all) .. это работает на другом представлении без использования хеша ... Здесь перейдите к коду другого представления '<% = f.input: pessoa,: label => 'Selecione o cliente/pessoa',: as =>: select,: collection => Pessoa.all%> ' – user2758091

+0

в простой форме, вы можете просто ввести его' <% = f. ассоциация: pessoa, as:: select, label: 'Selecione o cliente/pessoa'%> ' –