добавьте свой собственный маршрут для разработки - PullRequest
0 голосов
/ 11 февраля 2019

Я видел кучу сообщений о том, как переименовать уже объявленные маршруты в devise.Я хочу расширить разработку, чтобы иметь свою собственную проверку маршрута и сессию ожидания.Я реализую простую проверку js каждую 1 минуту, когда я хочу нажать 'check_active' в контроллере сессий devise.Я пробовал это, но не повезло:

devise_scope :sessions do
    get 'check_active'
end

Есть ли способ развернуть разработать с помощью собственного маршрута (не переименовывать уже существующий)?

ОБНОВЛЕНИЕ -почти там, я сделал это

# already had this in routes

devise_for :users, :controllers =>
    { registrations: 'registrations',
    confirmations: 'confirmations',
    sessions: 'sessions',
    passwords: 'passwords',
    omniauth_callbacks: "omniauth_callbacks"}

# added this

devise_scope :sessions do
    get '/check_active' => 'sessions#check_active'
end

У меня стрельба JS, у меня он получает '/ check_active', как показывают маршруты рейка:

check_active GET      /check_active(.:format)

Но когда он срабатывает,контроллер 404 с

AbstractController :: ActionNotFound (Не удалось найти сопоставление устройства для пути "/check_active".
Это может произойти по двум причинам:

1) You forgot to wrap your route inside the scope block. For example:                                                                                        

  devise_scope :user do                                                                                                                                      
    get "/some/route" => "some_devise_controller"                                                                                                            
  end                                                                                                                                                        

2) You are testing a Devise controller bypassing the router.                                                                                                 
   If so, you can explicitly tell Devise which mapping to use:                                                                                               

   @request.env["devise.mapping"] = Devise.mappings[:user]

):

1 Ответ

0 голосов
/ 11 февраля 2019

Если вы перезаписываете используемые по умолчанию контроллеры Devise, то ничем не отличается от других контроллеров для добавления своего собственного маршрута.

После того, как вы создадите свои контроллеры devise для перезаписи, выполните следующие действия.:

Под session_controller объявите метод

# app/controllers/devise/sessions_controller.rb
def check_active
   # do what you want to do
end

А в вашем роутере:

# config/routes.rb
devise_scope :sessions do
    get 'check_active', to: "devise/sessions#check_active"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...