2015-12-03 7 views
0

У меня есть таблица Users, которая также имеет идентификатор менеджера, чтобы реализовать самосоединение. когда я вхожу в качестве менеджера и нажимаю «Мои подчиненные», я должен видеть своих подчиненных. Подчиненные также находятся в таблице User. Так что мой вопросИспользование самосоединений в представлениях Rails

  1. То, что я должен сказать здесь <% = link_to "Мои Подчиненные", ???? _ путь%> (я имею в виду, как user_path.).
  2. Как должна быть модель и логика контроллера?

ответ

0

Я хотел бы сделать что-то как сказал @ryanfelton, но вместо того, чтобы переписать индексный метод, я бы создал новый специально для подчиненных.

class Manager::UsersController < ApplicationController 
    before_action :ensure_manager! #this one check the manager_id or any other condition to be manager 

    def sobordinates 
     @subordinates = @user.subordinates 
    end 

end 

#routes.rb 
namespace :manager do 
    resources :users do 
     collection do 
      get :subordinates 
     end 
    end 
end 

Таким образом, вы можете поддерживать индекс пользователей, и у вас есть метод только для подчиненных.

Имейте в виду, что вам нужно создать subordinates.html.erb внутри папки пользователей> app/views/manager/users/subordinates.html.erb

EDIT: Вы где просят модели и ссылку и так, вот он идет:

Ссылка: после редактирования route.rb, перейдите на консоль и используйте rake routes и найдите ссылку подчиненных. Добавьте _path или _url в зависимости от того, как вы используете этот путь.

Модель, я настоятельно рекомендую вам ознакомиться с официальной документацией об отношениях: http://guides.rubyonrails.org/association_basics.html. Это поможет вам больше, чем получить ответ на копирование и вставку.

+1

Выполнено. Понадобилось очень много времени, чтобы понять все это. Но стоило того :) –

+0

Рад помочь :) – LucasPadovan

0

Я бы порекомендовал namspacing a users_controller.rb.

Так было бы в папке app/controllers/manager/users_controller.rb

class UsersController < ApplicationController 
    before_action :ensure_manager! 

    def index 
    @manager.users 
    end 
end 

В routes.rb вы бы этот маршрут:

namespace :manager do 
    resources :users 
end 

Так в конечном счете, ваш путь будет manager_users_path

+0

В нем говорится: «Невозможно автоматически загрузить постоянный менеджер :: UsersController, ожидаемый /home/nitrous/pms/app/controllers/manager/users_controller.rb, чтобы определить его " –

Смежные вопросы