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 次 |
最近记录: |