Формастик - Почему не работает

Я пытался использовать это в своем тесте

<%= 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%>

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

Я также собрал все это вместе в коде:

<%= 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%>

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

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


person user2758091    schedule 10.09.2013    source источник


Ответы (1)


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

Вы можете ознакомиться с документацией.

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

person Mostafa Hussein    schedule 10.09.2013
comment
переменная @user является возвратом Model.all (User.all).. это работает в другом представлении, просто без использования хэша... Вот код другого представления <%= f.input :pessoa, :label => 'Selecione o cliente/pessoa', :as => :select, :collection => Pessoa.all %> - person user2758091; 13.09.2013
comment
в простой форме вы можете просто ввести его <%= f.association :pessoa , as: :select, label: 'Selecione o cliente/pessoa' %> - person Mostafa Hussein; 13.09.2013