Ruby on Rails中禁用了text_field

时间:2014-06-01 02:28:31

标签: ruby-on-rails ruby

当用户不是管理员并且工作正常时,我有以下代码禁用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就会消失。有谁知道为什么会这样,我该怎么办?

2 个答案:

答案 0 :(得分:27)

假设is_admin?返回truefalse,您只需执行

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