Vit*_*ani 9 ruby ruby-on-rails
我有以下代码来禁用text_field当用户不是管理员时它正常工作:
<div class="form-group">
<%= f.label :nome, "Genero" %>
<%= f.text_field :nome, class: "form-control", disabled: true if not is_admin? %>
</div>
Run Code Online (Sandbox Code Playgroud)
但是当用户是管理员时,text_field它就会消失.有谁知道为什么会这样,我该怎么办?
Kir*_*rat 28
假设is_admin?返回true或者false,你可以简单地做
<%= f.text_field :nome, class: "form-control", disabled: !is_admin? %>
Run Code Online (Sandbox Code Playgroud)
当前,if条件即if not is_admin?应用于整个文本字段,这导致is_admin?返回true时文本字段消失以及当条件返回false文本字段时显示.
您的代码未按预期工作的具体原因是运算符优先级问题 -if测试应用于整个文本字段,而不仅仅是disabled参数。
对此最直接的解决方案(虽然不一定是最好的)是true if not is_admin?用括号括起来:
<%= f.text_field :nome, class: "form-control", disabled: (true if not is_admin?) %>
Run Code Online (Sandbox Code Playgroud)
否则,整个文本字段都会if应用到它,如下所示:
<%= (f.text_field :nome, class: "form-control", disabled: true) if not is_admin? %>
Run Code Online (Sandbox Code Playgroud)
所以它只会为非管理员用户呈现- 即 whenis_admin?为 false。
此外,当它被渲染时,它总是disabled. (从好的方面来说,将使非管理员更难滥用。)
| 归档时间: |
|
| 查看次数: |
16094 次 |
| 最近记录: |