2017-04-12 79 views
2

我想弄清楚如何使条件禁用复选框?Rails 5:禁用复选框的条件

这是我的一段代码视图:

<%= 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

collection_check_boxes docs我不知道如何做到这一点。我认为有一些方法,但迄今没有找到一个运气。我天真的想法可能是某种条件可以用某种方式来表示。 Answers here显示如何使用check_box_tag来做到这一点。

我很乐意为任何提示如何解决这个问题。谢谢!

回答

2

如果你只是想使用HTML disabled属性,你可以做这样的事情:

<%= 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 %> 
+0

谢谢。这几乎是我需要的!我试过了,但现在任何用户都禁用了复选框,而不仅仅是current_user。任何想法应该调整什么? – matiss

+0

由于某种原因,@user always ==给current_user?也许添加'<%如果Rails.env.development? %>

is current: <%= @user == current_user %>
<% end %>'到模板,看看它是什么? hm –

+0

不确定'current_user'是否正在编辑'@ user'的设置,例如:'Started GET“/ en/users/8/edit”'但是我的'current_user' ID = 2。基本上我不想让当前用户勾选公司账户,以保持连接。否则,它可以勾出任何其他用户。 – matiss

0

使用禁用引导类或创建一个与作为

.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 %> 

您还可以使用显示属性设置为on类元素的基础上隐藏元素

希望这有助于

0

您可以使用此选项来禁用复选框,并显示div disable。

<%= 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 %>