2016-03-06 4 views
1

У нас есть приложение, и мы передали двигатель/драгоценный камень под именем Arcop. Механизм создает опросы для клиентов и имеет почтовую программу, которая отправляет электронные письма со ссылкой на опрос. Если клиент входит в приложение, ссылка работает правильно. Однако, если пользователь не зарегистрирован в приложении, он должен перенаправить на приложение sessions#new. Что, кажется, происходит, так это то, что Rails пытается найти маршрут в движке, а не в приложении.Rails двигатель переопределяет маршрут приложения

ошибка я получаю, когда я нажимаю на ссылку электронной почты, чтобы перейти на обследование двигателя генерироваться (/ локальный: 3001/АРКУЗ/survey_responses/30): application_controller.rb

No route matches {:action=>"new", :controller=>"sessions", :id=>"30"} 

приложения

before_action :redirect_if_site_is_private 

def redirect_if_site_is_private 
    ... 
    respond_to do |format| 
    format.html do 
     save_location 
     redirect_to login_path 
    end 
end 

Войти путь определяется как:

get 'sign-in' => 'sessions#new', as: :login 

я прочитал через Getting Started with Engines Rails Guide и двигатель наследует ApplicationController правильно:

class Arcop::ApplicationController < ::ApplicationController 

Так что я не знаю, куда идти отсюда ...

ответ

1

Решение было переопределить метод redirect_if_site_is_private внутри application_controller двигателя .rb с квалификатором main_app.

def redirect_if_site_is_private 
    ... 
    respond_to do |format| 
    format.html do 
     save_location 
     redirect_to main_app.login_path 
    end 
    end 
end 
Смежные вопросы