换句话说,在我的应用中,我有一个索引,显示我想从此列表中排除current_user的总用户数。
我已使用以下代码阻止user.name和user.profile_photo成功显示:
<% unless user.hidden_for?(current_user) || user.blocked_for?(current_user) || user == current_user %>
然而,它仍然显示当显示2个用户时,它只显示个人资料照片和其他用户的名字,它应该只是说显示一个用户而不包括我。
以下是最终需要修复的代码行:
<h4 class="events_counter">
<%= @users.any? ? "Showing #{pluralize(@users.size, 'people')}" : "No users to show" %>
</h4>
任何帮助都会很棒!! 干杯!
更新:(此处是当前相关的索引操作)
class ProfilesController < ApplicationController
before_filter :authenticate_user!
def index
if params[:search]
terms = params[:search][:terms] || nil
min_age = params[:search][:age_min] || nil
max_age = params[:search][:age_max] || nil
zipcode = params[:search][:zipcode] || nil
distance = params[:search][:distance] || nil
education_id = params[:search][:education_id] || nil
# @ethnicity_id = params[:search][:ethnicity_id] || nil
ethnicity_ids = params[:search][:cat_ids].split('').uniq || nil
gender = params[:search][:gender] || nil
@users = User.active.scoped_by_search(terms, min_age, max_age, education_id, ethnicity_ids, gender)
else
@users = User.active.page params[:page]
end
end
答案 0 :(得分:2)
使用Rails 4.x
,
假设您的操作名称为index
,您可以在其中设置@users
实例变量,您可以执行以下操作:
def index
#...
@users = User.active.scoped_by_search(terms, min_age, max_age, education_id, ethnicity_ids, gender).where.not(id: current_user.id)
else
@users = User.active.where.not(id: current_user.id).page params[:page]
#...
end
此处,如果您有current_user
,则@users
将包含除current_user
以外的所有用户。否则,@users
将拥有所有用户。
此外,您不需要在视图中进行任何检查,即
<% unless user.hidden_for?(current_user) || user.blocked_for?(current_user) || user == current_user %>
不再需要,因此您可以安全地将其删除。
此外,@users.size
会提供其他用户的正确计数(current_user
除外)。
答案 1 :(得分:1)
建议在查询中排除current_user
而不是查看。例如在控制器中:
@users = User.where('id != ?', current_user.id)
但是,如果您需要将当前用户保留在@users
数组中,请使用reject
将当前用户排除为:
@users.reject { |u| u.id == current_user.id }
答案 2 :(得分:0)
我建议在其他地方建立一个新的visible_users数组。
这是一种基于当前逻辑和数组获取该数组的方法。
visible_users = @users.reject{|user| user.hidden_for?(current_user) || user.blocked_for?(current_user) || user == current_user}
希望这会有所帮助。