带有 bootstrap 个按钮的轨道复选框
Rail checkbox with bootstrap buttons
我正在尝试为我的复选框使用 bootstrap 按钮 (http://getbootstrap.com/javascript/#buttons),用户必须 select 一个或多个选项。每个复选框都是一个布尔列。但是使用此代码,当我单击按钮时,复选框不会 selected,状态也不会改变。
<div class="btn-group btn-group-justified" data-toggle="buttons">
<%= f.label :tdm, class: "btn btn-primary" do %>
<%= f.check_box :tdm%>
beginner
<% end %>
<%= f.label :Domination, class: "btn btn-primary" do %>
<%= f.check_box :casual%>
casual
<% end %>
<%= f.label :ctf, class: "btn btn-primary" do %>
<%= f.check_box :ctf%>
competitive
<% end %>
<%= f.label :demolition, class: "btn btn-primary" do %>
<%= f.check_box :demolition%>
competitive
<% end %>
</div>
我想要完成的事情
https://jsfiddle.net/DTcHh/12565/
您需要做的第一件事是从 here 下载 bootstrap.min.js
并将其放入 vendor/assets/javascripts
文件夹中。然后通过添加此行启用它:
//= require bootstrap.min
到您的 app/assets/javascripts/application.js
文件。您可以通过转到您的 jsfiddle 并在 "External Resources".
下禁用 bootstrap.min.js
来证明这是问题的一部分
但是,您的按钮可能仍然无法使用,因为当您使用 check_box
功能时 Rails 会自动生成一个隐藏的 input
,它会破坏 Bootstrap 按钮。您可以在每个 check_box
调用结束时使用 include_hidden: false
参数阻止它创建隐藏的 input
。
现在,由于 this post,我认为在您的表单中为您禁用的每个设置一个隐藏的 input
是个好主意。您可以将它们放在不会破坏 Bootstrap 按钮并且会被任何用户输入覆盖的地方。表格中第一个 check_box
label
之前的任何地方都应该没问题。它们应该是这样的:
<%= hidden_field(:your_model_name, :tdm, value: "0") %>
应该可以了。
*编辑以包括替换隐藏的输入
我认为你的 DOM 看起来像这样
<div class="btn-group btn-group-justified" data-toggle="buttons">
<label class="btn btn-primary" for="object_tdm">
<input name="object[tdm]" type="hidden" value="0">
<input id="object_tdm" name="object[tdm]" type="checkbox" value="1">
beginner
</label>
</div>
在您的情况下,当您单击按钮时,复选框不会被选中,状态也不会因为 data-toggle="buttons"
而改变。您删除此属性并尝试一次。它应该工作。
我正在尝试为我的复选框使用 bootstrap 按钮 (http://getbootstrap.com/javascript/#buttons),用户必须 select 一个或多个选项。每个复选框都是一个布尔列。但是使用此代码,当我单击按钮时,复选框不会 selected,状态也不会改变。
<div class="btn-group btn-group-justified" data-toggle="buttons">
<%= f.label :tdm, class: "btn btn-primary" do %>
<%= f.check_box :tdm%>
beginner
<% end %>
<%= f.label :Domination, class: "btn btn-primary" do %>
<%= f.check_box :casual%>
casual
<% end %>
<%= f.label :ctf, class: "btn btn-primary" do %>
<%= f.check_box :ctf%>
competitive
<% end %>
<%= f.label :demolition, class: "btn btn-primary" do %>
<%= f.check_box :demolition%>
competitive
<% end %>
</div>
我想要完成的事情 https://jsfiddle.net/DTcHh/12565/
您需要做的第一件事是从 here 下载 bootstrap.min.js
并将其放入 vendor/assets/javascripts
文件夹中。然后通过添加此行启用它:
//= require bootstrap.min
到您的 app/assets/javascripts/application.js
文件。您可以通过转到您的 jsfiddle 并在 "External Resources".
bootstrap.min.js
来证明这是问题的一部分
但是,您的按钮可能仍然无法使用,因为当您使用 check_box
功能时 Rails 会自动生成一个隐藏的 input
,它会破坏 Bootstrap 按钮。您可以在每个 check_box
调用结束时使用 include_hidden: false
参数阻止它创建隐藏的 input
。
现在,由于 this post,我认为在您的表单中为您禁用的每个设置一个隐藏的 input
是个好主意。您可以将它们放在不会破坏 Bootstrap 按钮并且会被任何用户输入覆盖的地方。表格中第一个 check_box
label
之前的任何地方都应该没问题。它们应该是这样的:
<%= hidden_field(:your_model_name, :tdm, value: "0") %>
应该可以了。
*编辑以包括替换隐藏的输入
我认为你的 DOM 看起来像这样
<div class="btn-group btn-group-justified" data-toggle="buttons">
<label class="btn btn-primary" for="object_tdm">
<input name="object[tdm]" type="hidden" value="0">
<input id="object_tdm" name="object[tdm]" type="checkbox" value="1">
beginner
</label>
</div>
在您的情况下,当您单击按钮时,复选框不会被选中,状态也不会因为 data-toggle="buttons"
而改变。您删除此属性并尝试一次。它应该工作。