Rails Simple_form gem и jQuery Mobile Флажки - PullRequest
1 голос
/ 16 марта 2012

Я использую гем simple_form в rails 3.2.2 и пытаюсь установить чекбоксы для ассоциации HABTM.

A Мониторинг имеет и принадлежит многим Сценариям и vica versa.

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

= f.association :scenarios, as: :check_boxes

Это приведет к следующему выводу:

<div class="checkbox">
  <label class="checkbox">
    <div class="ui-checkbox">
      <input class="check_boxes optional" id="monitoring_scenario_ids_1" name="monitoring[scenario_ids][]" type="checkbox" value="1">
      </div>
    Haraam Meat Found</label>
  <input name="monitoring[scenario_ids][]" type="hidden" value="">
</div>

Однако jQuery Mobile будет стилизовать и распознавать его только в следующем формате:

<input type="checkbox" name="checkbox-1" id="checkbox-0" class="custom" />
<label for="checkbox-0">I agree</label>

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Измените config.boolean_style с :nested на :inline в вашем config / initializers / simple_form.rb, как вы можете видеть в этих строках https://github.com/plataformatec/simple_form/blob/master/lib/generators/simple_form/templates/config/initializers/simple_form.rb.tt#L94-98

0 голосов
/ 16 марта 2012

Это что-то вроде хака, но вы можете реорганизовать свой HTML, когда сработает событие pagecreate:

//wait for the page to be created
$(document).delegate('[data-role="page"]', 'pagecreate', function () {

    //loop through each of the `div.checkbox` elements
    $.each($(this).find('div.checkbox'), function (index, element) {

        //cache the label for this `div.checkbox` element and the form inputs
        var $label = $(this).children('label').attr('for', $(this).find('input[type="checkbox"]')[0].id),
            $inputs = $label.find('input');

        //append the inputs at the same level as the label,
        //then select the checkbox and initialize a checkbox widget
        $label.parent().append($inputs).children('input[type="checkbox"]').checkboxradio();
    });
});​

Вот демоверсия: http://jsfiddle.net/vAjDn/2/

...