当用户不是管理员并且工作正常时,我有以下代码禁用text_field
:
<div class="form-group">
<%= f.label :nome, "Genero" %>
<%= f.text_field :nome, class: "form-control", disabled: true if not is_admin? %>
</div>
但是当用户是管理员时,text_field
就会消失。有谁知道为什么会这样,我该怎么办?
答案 0 :(得分:27)
假设is_admin?
返回true
或false
,您只需执行
<%= f.text_field :nome, class: "form-control", disabled: !is_admin? %>
目前, if condition 即if not is_admin?
应用于整个文本字段,这会导致is_admin?
返回true
时文本字段消失条件返回false
文本字段显示。
答案 1 :(得分:2)
您的代码未按预期运行的具体原因是运算符优先级问题。
对此最直接的解决方案(虽然不一定是最好的)是将true if not is_admin?
括在括号中:
<%= f.text_field :nome, class: "form-control", disabled: (true if not is_admin?) %>
否则,整个文本字段都会应用if
,如下所示:
<%= (f.text_field :nome, class: "form-control", disabled: true) if not is_admin? %>