您不应在视图中使用 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>
但是,您不应该创建太多以 . 开头的全局变量@
。我认为规则是最大 3 或 4。或者,您可以使用局部变量并将它们传递给您的视图,如下所示。
def edit_action
departments = Department.where('name != admin').order('name ASC').all
render :action => 'edit_action', :locals => { :depts => departments }
end
<td><%= collection_select(:feedback, :department_id, depts, :id, :name) %></td>
至于您要隐藏的管理选项。您需要先将其从集合中删除,然后再将其传递给您的视图。使用某种条件或名称匹配在您的视图中删除它很容易出错,不推荐。