Ruby on Rails: изменить метку флажка в formtastic - PullRequest
4 голосов
/ 26 марта 2012

Я использую formtastic для визуализации формы для объекта модели, который имеет отношение HABTM с другой моделью.

Я делаю это для отображения списка флажков:

<%= f.input :classes, :as => :check_boxes, :collection => UserClass.all %>

И да, он отображает все флажки, а справа показывает имя объекта, что-то вроде этого. Итак, у меня есть что-то вроде этого:

[x] #<UserClass:0x000000087e4958>

Как я могу это изменить? Я хочу показать название класса и описание ...

Спасибо.

Ответы [ 2 ]

13 голосов
/ 26 марта 2012

Используйте параметр :member_label:

<%= f.input :classes, :as => :check_boxes,
    :collection => UserClass.all, :member_label => :name %>

(Предположим, например, что ваш UserClass имеет атрибут name).Если ваша метка происходит из нескольких полей, вы можете передать Proc.Например (если ваш UserClass имеет атрибуты first_name и last_name):

<%= f.input :classes, :as => :check_boxes,
    :collection => UserClass.all,
    :member_label => Proc.new { |u| "#{u.first_name} #{u.last_name}" } %>

Выше приведено для Formtastic версии 2.x.Для ветки 1.2-stable это работает так же (вы можете передать имя метода или proc), но опция называется :label_method.Пример:

<%= f.input :classes, :as => :check_boxes,
    :collection => UserClass.all, :label_method => :name %>
0 голосов
/ 26 марта 2012

TR удалить рендеринг из тега. Используйте <% вместо <% = </p>

спасибо @HommerSmith за разъяснения относительно использования в старых версиях и того, где использовать приведенный выше пример.

...