如何在Rails中的下拉列表(集合列表)中隐藏特定值?

时间:2013-09-12 10:21:26

标签: ruby-on-rails ruby-on-rails-3.2

我想隐藏集合中的元素而不是手动集。

<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等。我想隐藏管理员 落下。怎么做?

2 个答案:

答案 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。或者,您可以使用局部变量并将它们传递给您的视图。

@

至于您要隐藏的管理员选项。在将其传递给视图之前,您需要将其从集合中删除。在视图中使用某种条件或名称匹配将其删除是容易出错的,不建议这样做。