我想根據通過導航欄傳遞的參數值顯示當前用戶(經理)數據,並在選擇標記中顯示其名稱,用戶有兩個角色('user','manager' )或枚舉角色(0,1)。 這是我在導航欄給的鏈接 -顯示當前用戶的數據及其在選擇標記中的名稱
%li= link_to 'Timesheet', is_manager? ? timesheet_path(user_id: current_user.id) : timesheet_path, class: navlink_class('timesheets')
但在控制器是越來越複雜,因爲我所使用的查詢是這些 -
@begin_date = params[:begin_date].present? ? Date.parse(params[:begin_date]) : Date.today.beginning_of_month
@end_date = params[:end_date].present? ? Date.parse(params[:end_date]) : Date.today.end_of_month
begin_datetime = @begin_date.beginning_of_day
end_datetime = @end_date.end_of_day
@user_tasks = Task.joins(:task_time_trackers).where("(task_time_trackers.created_at BETWEEN ? AND ?)",begin_datetime, end_datetime).distinct.order("id ASC")
user_trackers = TaskTimeTracker.joins(:task).where("(task_time_trackers.created_at BETWEEN ? AND ?)",begin_datetime, end_datetime)
u_id = nil
u_id = params[:u_id] if (params[:u_id] && params[:u_id] != 'all')
u_id = current_user.id if current_user.role == 'user'
unless u_id.nil?
@user_tasks = @user_tasks.where(task_time_trackers: { user_id: u_id})
user_trackers = user_trackers.where(task_time_trackers: { user_id: u_id})
end
最後選擇標籤我已經使用 -
select_tag(:u_id, options_for_select(User.user_for_select(current_user), selected: params[:u_id]), class: "input-sm form-control", onchange: "this.form.submit();")
用戶模型 -
class << self
def user_for_select(user)
self
.pluck("CASE WHEN id = #{user.id} THEN 'Me' ELSE name END AS name, id")
.unshift(['All', 'all'])
end
end
有對用戶的用戶和經理兩個角色,經理可以選擇任何用戶或所有的用戶,我在時間表中使用它,所以默認情況下它會加載所有用戶的所有記錄,所以我希望它首先加載它的時間表,然後他可以選擇他是否想要看到所有用戶都只是一個特定的,我還添加了我用於此記錄生成的查詢。 –
我更新我的答案,接受它,如果它幫助你:) –