Rails options_from_collection_for_select显示除当前用户外的所有用户

时间:2019-01-07 01:37:39

标签: ruby-on-rails

我有一个传输模块,我想在其中在options_from_collection_select 中显示所有可能的接收者。我设法显示了所有用户,但我希望它不显示所选内容中的当前用户名,因为用户不应该收到自己的转让。这就是我现在拥有的:please click for the image。我目前正在使用ADMIN帐户,并且您可以看到它显示在select标签上。我只希望它被隐藏。这是我的代码:

_form.html.erb:

<div class="form-group">
 <div class="col-md-4">
    <%=  f.label :administrator, "To be Receive by", class: "control-label" %>
    <%= f.select :administrator_id,options_from_collection_for_select(@administrators.order("name"), :id, :name, :selected => f.object.administrator_id),{}, class:"select2 form-control", include_blank: 'Select Receiver',required: true %>
 </div>
</div>

1 个答案:

答案 0 :(得分:2)

控制器

class UserController < ApplicationController
      def index
        @users = User.where.not(:id=>current_user.id)
      end
    end
  

您可以在视图中访问实例变量@users

  

您可以使用下面my explanation给出的作用域变量

模型

class User < ApplicationRecord
  scope :all_except, ->(user) { where.not(id: user) }
end
  

在您的controller中访问范围变量

控制器

@users = User.all_except(current_user)