Как создавать партиалы Formtastic

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

Раньше я делал это только с выборками, но это намного проще, потому что вам нужно предоставить только общий набор опций. Флажки (особенно с formtastic) имеют много соответствующей разметки, которую я бы не стал генерировать самостоятельно.

Тогда мой вопрос заключается в том, как заставить formtastic создавать только правильные флажки, но при этом их поля имени и идентификатора содержат всю правильно вложенную информацию. Я хочу, чтобы он действовал точно так же, как показано ниже, но выводил только последнюю строку для отправки через ajax.

= semantic_form_for @user do |u|
  = u.inputs :name, :age
  = semantic_fields_for :job do |f|
    = f.input :category, :as => :select, :collection => Category.all
    = f.input :subcategory, :as => :check_boxes, :collection => # This is what needs to be dynamic

Я пытался просто использовать последнюю строку, завернутую в общий semantic_fields_for, но имена полей больше не верны.

Как бы вы это сделали?


person Luke    schedule 28.06.2011    source источник


Ответы (2)


Я бы попробовал это:

= semantic_fields_for @user do |u|
  = semantic_fields_for :job do |f|
    = f.input :subcategory, :as => :check_boxes, :collection => some_thing

Я почти уверен, что это должно сработать.

person thomasfedb    schedule 30.09.2011

Вам нужно будет использовать помощника и определить его как метод. например:

def form_boxes(f)
  f.input :subcategory, :as => :check_boxes, :collection => stuff_goes_here
end

а затем вызовите в своем представлении:

= form_boxes(f)
person thomasfedb    schedule 29.09.2011
comment
Это будет работать, если вы хотите создать всю форму, но остается вопрос, как отобразить только сами флажки. Целью этого является динамическое создание набора отфильтрованных флажков для возврата из вызова ajax. - person Luke; 30.09.2011
comment
О, теперь я вижу настоящую проблему. - person thomasfedb; 30.09.2011