2012-06-15 2 views
0

У меня есть две модели: User и Category которые имеют ассоциацию HABTM.Как создать кучу флажков из коллекции?

Я хотел бы сгенерировать флажки из коллекции Category элементов на моем виде и связать их с current_user.

Как это сделать?

Спасибо.

P.S. Я знаю, что я могу сделать эквивалент для выпадающего меню с options_from_collection_for_select. Я также знаю, что у Rails есть помощник checkbox_tag. Но не совсем уверен, как сделать их обоих. Я знаю, что могу просто сделать это вручную с каждым циклом или что-то в этом роде, но мне интересно, есть ли что-то для Rails 3, которое мне не хватает.

ответ

2

ли вы проверить formtastic или simple_form

Они имеют помощников, чтобы написать ваши формы более легко, а также для обработки простых ассоциаций.

E.g. в simple_form вы можете просто написать

= simple_form_for @user do 
    = f.association :categories, :as => :check_boxes 

В form_tastic можно было бы написать

= simple_form_for @user do 
    = f.input :categories, :as => :check_boxes 

Надеется, что это помогает.

+0

Вау ... Мне было интересно, какие преимущества Simple_Form были, но я рад, что вы это указали. Большое спасибо. – marcamillion

0

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

form_for current_user do |f| 
f.collection_select(
    :category_ids,   # the param key, so params[:user][:category_ids] 
    f.object.categories,  # the collection of items in the list 
    :id,      # option value 
    :name      # option string 
) 
end 

Вы можете передать :multiple => true опции на конце, если это необходимо.

+0

К сожалению, это просто создает выпадающее меню - а не ряд флажков HABTM. – marcamillion

+0

Правильно, извините, я неправильно понял ваш вопрос. Нет встроенного помощника для перебора флажков. –