Rails - выполнить JS после действия контроллера - PullRequest
1 голос
/ 07 апреля 2020

У меня есть login_controller, который обрабатывает логины пользователей. Он использует единый вход - таким образом, вход в систему кажется пользователю незаметным, и они будут перенаправлены на страницу, к которой они пытались получить доступ (например, если у них была ссылка в закладке).

Я хочу выполнить js фрагмент для аналитики. Но я хочу выполнить его только один раз , то есть после входа в систему через login_controller.

Я попытался добавить заголовок ответа в контроллере входа:

response.headers['user_logged_in'] = "true"

и я положил JS в приложение. html .erb для проверки этого заголовка - но заголовка нет:

if @user && request.headers['user_logged_in'] == "true"

Каков наилучший способ сделать это?

1 Ответ

3 голосов
/ 07 апреля 2020

Я думаю, что ваша ситуация идеально подходит для использования flash.

Все, что вы поместите в флаг sh, будет подвергнуто следующему действию, а затем очищено.

Итак, вы можете сделать:

class SessionsController
  def create
    flash[:signed_in] = true
  end
end

Затем в вашем application.html.erb вы можете сделать:

<% if flash[:signed_in] %>
  ...
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...