我想隐藏集合中的元素而不是手动集。
<tr>
<td> <%= f.label :department, 'Select a Department,
you want to report to : ' %> <br> </td>
<td><%= collection_select(:feedback, :department_id, Department.order('name ASC'),
:id, :name) %></td>
现在,Deparment列表中有admin,cat1,cat2,cat3等。我想隐藏管理员 落下。怎么做?
答案 0 :(得分:0)
只需将其从集合中移除
即可 <%= collection_select(:feedback, :department_id, Department.where("name <> 'admin'").order('name ASC'),
:id, :name) %>
答案 1 :(得分:0)
您不应在视图中使用SQL语句。这就是控制器的用途。
def edit_action
@departments = Department.where('name != admin').order('name ASC').all
end
现在,您可以在edit_action.html.erb中使用@departments变量(或者在您的情况下,无论其名称是什么)。
<td><%= collection_select(:feedback, :department_id, @departments, :id, :name) %></td>
但是,您不应该以{{1}}开头创建太多这些全局变量。我认为规则最多是3或4。或者,您可以使用局部变量并将它们传递给您的视图。
@
至于您要隐藏的管理员选项。在将其传递给视图之前,您需要将其从集合中删除。在视图中使用某种条件或名称匹配将其删除是容易出错的,不建议这样做。