sign_in_count первый раз Rails - PullRequest
       0

sign_in_count первый раз Rails

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

Я пытаюсь поставить модал для новых пользователей, который говорит «Добро пожаловать» (или другое сообщение), я использую «sign_in_count» для записи количества входов в систему. На данный момент у меня есть что-то вроде этого:

<% if current_user.sign_in_count == 1  %>
  <div class="modal fade in" id="myModal0" role="dialog">
    <div class="modal-dialog modal-lg">
      <div class="modal-content" style="width: 90%" >
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
        </div>
        <div class="modal-body">
          <h3 style="color: black; position: center">¡Welcome! <%=current_user.name%>.</h3>
          <iframe src="/uploads/pdfs/5.pdf" width="700px" height="650px"></iframe>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
    </div>
  </div>
<%end %>

очевидно, если пользователь вводит в первый раз, sign_in_count всегда будет равен 1, и модальное будет появляться каждый раз, когда пользователь перезагружает страницу если пользователь не отключается и не входит снова (это не идея); и если sign_in_count+=1, то увеличения как такового нет. Может ли быть способ, где sign_in_count is 2 при первом входе? Модальный должен появляться, когда пользователь новый; или любое решение, которое вы можете предложить? Я очень ценю помощь. Ура и спасибо!

Ответы [ 2 ]

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

Я решил с помощью следующей строки кода:

 <% if current_user.sign_in_count == 1  %>
  <div class="modal fade in" id="myModal0" role="dialog">
    <div class="modal-dialog modal-lg">
      <div class="modal-content" style="width: 90%" >
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
        </div>
        <div class="modal-body">
          <h3 style="color: black; position: center">¡Welcome! <%=current_user.name%>.</h3>
          <iframe src="/uploads/pdfs/5.pdf" width="700px" height="650px"></iframe>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
    </div>
  </div>
  <%=current_user.increment!(:sign_in_count) %>
<%end %>

что следующая строка делает <%=current_user.increment!(:sign_in_count) %>, чтобы официально увеличить атрибут, в этом случае :sign_in_count это атрибут для увеличения.

Ура.

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

Я бы просто добавил параметр строки запроса в любой URL, на который вы перенаправляете после регистрации. Например:

def after_sign_up_path_for(resource)
  root_path(show_welcome_popup: true)
end

См. Как: Перенаправить на указанную c страницу при успешной регистрации (регистрации)

Затем вы можете просто проверить:

<%= if params[:show_welcome_popup] %>
  # ...
<% end %>

После отображения всплывающего окна используйте history.replaceState - изменение истории браузера :

// path/to/some/file.js
history.replaceState(null, window.title, window.location.pathname)

Это предотвратит повторное появление всплывающего окна, если пользователь нажмет приятная кнопка назад.

...