Options_for_select包含除当前参数之外的所有组

时间:2013-12-16 12:05:31

标签: ruby-on-rails ruby-on-rails-4

我的@userGroups中有一个用户列表,我在select_tag中使用了options_for_select。它就像一个魅力;但当我在页面groups/4/时,我想在选择框中显示不包括第4组的选择框。

知道怎么做吗?

    <%= select_tag(:group_id, 
                    options_for_select(
                            @userGroups.collect{ |u| [u.name, u.id] }
                    ), 
                    :prompt => "Choose group",
                    :id => "moveClientsToGroup") %>

做了一个小测试:

<% @a = current_user.groups.where("id <> ?", params[:id]) %>
<% @a.each do |f| %>
    <%= f.name %>
<% end %>

抛出:SQLite3::SQLException: ambiguous column name: id: SELECT "groups".* FROM "groups" INNER JOIN "groupusers" ON "groups"."id" = "groupusers"."group_id" WHERE "groupusers"."user_id" = ? AND (id != '4')

1 个答案:

答案 0 :(得分:1)

在控制器内的索引操作中,您有参数。因此,当您填充列表userGroups时,可以这样做:

if params[:id]
  @userGroups = UserGroup.where("id <> ?", params[:id])
else
  @userGroups = UserGroup.all
end

P.S。:我不知道模型名称是否是UserGroup,我只是猜测,这是一个例子,所以你可以得到这个想法。