Это одна из проблем смешивания SPA-маршрутов и не-SPA-маршрутов. Я думаю, что предпочтительнее потерять некоторое время, переводя устройство в ответ только для API, а затем делая маршрутизацию сеанса пользователя также SPA.
Я не уверен, что если вы не можете получить доступ к параметрам запроса в контроллере устройства, вам следует проверить, возможно, вы можете это сделать, но если нет, то есть хотя бы один способ обойти это, и это было бы иметь before_action
на вашем application_controller.rb
перед любой логикой устройства, чтобы просто назначить ключ сеанса на основе параметров, а в вашем after_action
удалить его, например (просто для иллюстрации):
#application_controller.rb
before_action :set_continue
#...
def set_continue
if params[:continue]
session[:continue] = params[:continue]
end
end
Это позволит вам использовать его на after_sign_in_path
:
def after_sign_in_path_for(resource)
if session[:continue]
navigation = session[:continue]
session[:continue] = nil
navigation
else
your_regular_path_helper #or super I guess
end
end