Rails 5:禁用复选框条件

时间:2017-04-12 17:06:20

标签: ruby-on-rails

我试图找出如何在条件下禁用复选框?

这是我的一段代码:

<%= f.collection_check_boxes(:company_ids, @user_companies, :id, :name) do |b| %>
 <div class="col-sm-1">
   <%= b.check_box %>
 </div>
   <%= b.label %><br><br>
<% end %>

如果@user = current_user

,我需要禁用它

here中,我不知道如何实现这一目标。我认为有一些方法,但到目前为止没有运气找到一个。我天真的想法也许可以在某种程度上说明条件。 collection_check_boxes docs显示了如何使用check_box_tag执行此操作。

我很高兴任何提示如何解决这个问题。谢谢!

3 个答案:

答案 0 :(得分:2)

如果您只想使用HTML禁用属性,可以执行以下操作:

<%= f.collection_check_boxes(:company_ids, @user_companies, :id, :name) do |b| %>
  <div class="col-sm-1">
    <%= b.check_box disabled: @user == current_user  %>
  </div>
  <%= b.label %><br><br>
<% end %>

答案 1 :(得分:0)

使用bootstrap disabled类或使用as

创建一个
.disabled{
  pointer-events: none;
   cursor: not-allowed;
 }

现在您可以使用此类来禁用该复选框。

<%= f.collection_check_boxes(:company_ids, @user_companies, :id, :name) do |b| %>
 <div class="col-sm-1">
   <%= b.check_box( class: (@user == current_user) ? "disabled​" : "" ) %>
  </div>
   <%= b.label %><br><br>
 <% end %>

您还可以使用display属性根据元素类隐藏元素

希望这有帮助

答案 2 :(得分:0)

您可以使用它来禁用该复选框,并同时显示div禁用。

<%= f.collection_check_boxes(:company_ids, @user_companies, :id, :name) do |b|%>
 <div class="col-sm-1 <%=(@user == current_user) ? "disabled​" : ""%>">
   <%= b.check_box( onclick:"return false;")) %>
  </div>
   <%= b.label %><br><br>
 <% end %>