Flash Danger появляется дважды только при входе в систему - PullRequest
0 голосов
/ 05 июля 2019

Пожалуйста, посмотрите на изображение по этой ссылке https://i.stack.imgur.com/6mL5y.png, чтобы точно понять, о чем я говорю.

У меня есть флэш-сообщение [: опасность] для неверного входа в систему, которое отображается дважды только в моем представлении входа в систему. Однако я не знаю, откуда приходит текстовое сообщение (дублирование). Я могу найти его только при использовании FireFox для проверки элемента.

Я использую AWS Cloud и просмотрел свой контроллер и модель входа в систему, мой файл custom.scss, мой вид входа в систему и даже мой route.rb (на всякий случай). Там нет ничего, что бы показать флэш-сообщение снова.

Моя вспышка используется только в действии создания для моего контроллера входа.

Вот что я вижу, когда проверяю элемент с помощью FireFox:

<div class="container">
   <div class="alert alert-danger">Invalid email/password combination</div>
    Invalid email/password combination **<---This is the oddity**
</div>

Контроллер My Login:

def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      # Log the user in and redirect to the user's show page.
    else
      flash[:danger] = 'Invalid email/password combination' **<--Only here**
      render 'new'
    end
  end

Ниже приведено то, что находится в моем представлении входа в систему:

<% provide(:title, "Log in") %>
<h1>Log in</h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(:session, url: login_path) do |f| %>

      <%= f.label :email %>
      <%= f.email_field :email, class: 'form-control' %>

      <%= f.label :password %>
      <%= f.password_field :password, class: 'form-control' %>

      <%= f.submit "Log in", class: "btn btn-primary" %>
    <% end %>

    <p>New user? <%= link_to "Sign up now!", signup_path %></p>
  </div>
</div>

Если я что-то упустил, дублирование не должно появляться. Я использовал flash для другой части моего веб-приложения, и у меня не было этой проблемы. Я ожидаю увидеть только текст в элементе оповещения, а не дублирование.

Любой совет о том, как остановить это дублирование, будет принят.

Это изображение того, о чем я говорю. То, что находится под этим красным прямоугольником, является моей проблемой: https://i.stack.imgur.com/6mL5y.png

В соответствии с просьбой г-на Пандея ниже приводится содержание моего application.html.erb:

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= render 'layouts/rails_default' %>
    <%= render 'layouts/shim' %>

  </head>
  <body>
    <%= render 'layouts/header'%>
      <div class="container">
      <% flash.each do |message_type, message| %>
        <%= content_tag(:div, message, class: "alert alert-#{message_type}") %>
          <%= message %>
        </div>
      <% end %>
      <%= yield %>
      <%= render 'layouts/footer' %>
      <%= debug(params) if Rails.env.development? %>
    </div>
  </body>
</html>

1 Ответ

1 голос
/ 05 июля 2019

Заменить

  <% flash.each do |message_type, message| %>
    <%= content_tag(:div, message, class: "alert alert-# 
  {message_type}") %>
      <%= message %>
    </div>
  <% end %>

с

<% flash.each do |message_type, message| %>
  <%= content_tag(:div, message, class: "alert alert-#{message_type}") %>
<% end %>

Ниже flash из-за <%= message %> один

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...