Rails Simple_form gem和jQuery Mobile Checkbox

时间:2012-03-15 22:08:03

标签: jquery forms jquery-mobile ruby-on-rails-3.2 simple-form

我在rails 3.2.2中使用了simple_form gem,并且正在尝试为HABTM关联设置checbox。

监控拥有并属于许多方案,反之亦然。

使用简单表格,我可以使用以下方式自动输出一组复选框:

= 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 个答案:

答案 0 :(得分:1)

在config / initializers / simple_form.rb中将config.boolean_style:nested更改为:inline,正如您在{(3}}

行中所看到的那样

答案 1 :(得分:0)

这有点像黑客,但你可以在pagecreate事件触发时重新组织你的HTML:

//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/