2015-07-13 3 views
0

У нас есть модель под названием «Авторизация», которая является таблицей соединений для пользователя и роли. Когда вы смотрите с точки зрения пользователя (POV), авторизация называется одобрением. Когда смотришь с Ролевой POV, он называется Держателем. Они реализуются с использованием вложенных ресурсов:Rails-4.2 Share view with muliple контроллеры

resources(:users) do 
    resources( :roles, 
     :as => 'endorsements', 
     :controller => 'endorsements') 
    end 

    resources(:roles) do 
    resources(:users, 
     :as => 'holders', 
     :controller => 'holders') 
    end 

Нам необходимо поддерживать авторизацию напрямую. Но мы также должны поддерживать их для конкретных пользователей или ролей. Мы создали три контроллера с именем, authorisations_controller.rb, endorsements_controller.rb и holder_controller.rb. Мы хотели бы, чтобы все три использовали одни и те же представления/авторизации/новые | править | показывать | страницы индекса, так как другие, кроме фильтра пользователя или роли, идентичны по своей природе.

Однако, когда мы вводим шаблон views/authorizations/new.html.erb из endorsements_controller.rb, кнопка отправки заставляет управление программой возвращаться к authorisations_controller, а не к вызывающему endorsements_controller. Есть ли идиома Rails-4, позволяющая просматривать представления между контроллерами и возвращаться к вызывающему экземпляру?

+0

Вы можете передать 'ret' параметров в URL, чтобы использовать, чтобы вернуться. Другие параметры устанавливают его в сеансе. Вы также можете проверить тип пользователя, которого вы проверяете и перенаправляете на основании этого – CWitty

ответ

1

В EndorsementSController вы можете: использование redirect_to и установить возвращение на путь и желаемой флэш-сообщения, или использовать responders драгоценный камень, который принимает location аргумент. I.e. respond_with user, location: endorsements_path

Более подробную информацию о responders доступна по адресу:

+0

. Я работал над этим, используя мягкую ссылку из './Views/endorsements/new.html.erb' в' ./views/authorisations/new. html.erb'. Однако предложенный подход _ответчиков gem выглядит более надежным. –