【问题标题】:Using Toggle Buttons in place of Check boxes (Rails, Twitter Bootstrap, Simple_form)使用切换按钮代替复选框(Rails、Twitter Bootstrap、Simple_form)
【发布时间】:2012-04-14 20:04:42
【问题描述】:

我正在使用 Simple_form、twitter bootstrap 和 rails 3.2.2

有谁知道是否有办法在 simple_form 中的布尔字段上使用“切换按钮”选项进行引导?我想用按钮替换复选框。

这是我迄今为止尝试过的形式(rails):

<%= f.input :client_approved, :input_html => { :class => 'btn btn-primary', :data => {:toggle => 'button'} } %>

这是 HTML 输出:

<input class="boolean optional btn btn-primary" data-toggle="button" id="id_card_design_client_approved" name="id_card_design[client_approved]" type="checkbox" value="1">

关于如何将按钮标签分配给 simple_form 输入的任何想法?

【问题讨论】:

    标签: ruby-on-rails twitter-bootstrap simple-form


    【解决方案1】:

    我提出了一种基于 JS 的方法...我确信这不是最好的方法,但它确实有效...

    在您的视图文件中,添加类似以下内容的内容:

    <div id="client_approved_buttons" class="btn-group" data-toggle="buttons-radio">
      <%= f.input : client_approved, as: :hidden %>
      <a class="btn" data-value="1">Yes</a>
      <a class="btn" data-value="0">No</a>
    </div>
    

    然后在你的 JS 文件中,添加这个:

    // make button toggles update hidden field
    $('.btn-group a').on('click', function(event){
      event.preventDefault();
      var input = $(this).siblings('.control-group').find('input[type=hidden]');
      if(input.length>0){
        if(input.val().toString() !== $(this).data('value').toString()){
          input.val($(this).data('value')).trigger('change');
        }
      }
    });
    

    【讨论】:

    • 我正在考虑使用 JS 来更新提交时的隐藏字段,但我更喜欢这种方法。
    • 刚刚回到这个项目。谢谢你的回答。它确实按预期运行,但未分配 1 或 0 的值。所以它不能正确保存。
    • 您的意思是隐藏字段已更新,但 Rails/您的 ORM 没有注册更改?
    • 抱歉,我没有将 JS 包装成函数。 $(function() { 一切都很好,谢谢!
    • 不是 Rails 干净的答案
    猜你喜欢
    • 2012-08-11
    • 1970-01-01
    • 2013-02-28
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多