Проблемы с маршрутизацией на Rails: как заставить Devise сохранять аутентифицированного пользователя методом post
У меня есть index
метод в моем homepage_controller
, На домашней странице есть модуль поиска, и когда пользователь что-то ищет, домашняя страница вызывает себя с помощью формы поиска, используя GET
метод.
Маршрут у меня в моем routes.rb
для этого точного случая это:
get '/' => 'homepage#index', as: :homepage_without_locale
И я добавил эту строку в мой routes.rb
файл:
post '/' => 'homepage#index', as: :post_homepage_without_locale
Это работает независимо от того, вошел ли пользователь в систему или нет, как и должно быть. Конечно, если пользователь вошел в систему, когда страница снова загружается с результатами поиска, пользователь все еще вошел в систему.
Теперь простой факт изменения метода формы GET
в POST
вводит поведение, которое я не понимаю: когда вошедший в систему пользователь ищет что-то, результаты поиска возвращаются, как и должно быть, но страница отображается так, как будто пользователь не вошел в систему.
Когда возникает эта проблема, если я просто обновить страницу (которая вызывает его с GET
метод), я вошел снова (так что не проблема с куки).
Я попытался определить проблему, и у меня есть следующий метод, который вызывается перед отображением страницы:
def fetch_logged_in_user
if person_signed_in?
@current_user = current_person
setup_logger!(user_id: @current_user.id, username: @current_user.username)
end
end
Я проверял, когда я использую GET
метод в моей форме, person_signed_in?
является true
, Если я использую POST
метод, person_signed_in?
является false
, Этот метод, person_signed_in?
является внутренним для Devise.
Поскольку я ничего не добавил в маршрутизацию, чтобы сказать Devise, чтобы пользователь оставался аутентичным, я подозреваю, что что-то там не хватает, любая помощь приветствуется.