Динамическое изменение цвета уведомления в Rails

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

У меня есть страница входа в систему, которая состоит из формы, в которой пользователь вводит адрес электронной почты и пароль. Я проверяю, соответствуют ли адрес электронной почты и пароль записи в активной записи, и если это так, у меня появляется уведомление с надписью «Вход в систему», которое по умолчанию является зеленым, но у меня есть другое уведомление о недопустимом входе, и у меня возникают проблемы с тем, как сделать это уведомление красным вместо зеленого.

Вот мой индекс входа в систему.html.erb

 <p id="notice"><%= notice %></p>
<h1>Please Login</h1>
<%= form_for(:user, :url => { :action => "login" }) do |form|  %>
    <%= form.text_field :email, :placeholder => 'Email'%>
    <br><br>
    <%= form.password_field :password, :placeholder => 'Password'%>
    <br><br>
    <%= form.submit 'Login' %>
    <%= link_to "Cancel", home_index_path %>
<% end %>
  

Вот мой login_controller.rb

 class LoginController < ApplicationController
  def index
  end

  def login

    email = params[:user][:email]
    password = params[:user][:password]

    @user = User.find_by(email: email, password: password)

    respond_to do |format|
      if @user.try(:id)
        format.html { redirect_to login_index_path, notice: 'Signed In'}
      else
        format.html { redirect_to login_index_path, notice: 'Invalid username/password combination' }
      end
    end
  end

end
  

Ответ №1:

просто измените свой контроллер:

 respond_to do |format|
  if @user
    format.html { redirect_to login_index_path, notice: 'Signed In'}
  else
    format.html { redirect_to login_index_path, alert: 'Invalid username/password combination' }
  end
end
  

Изменение ключа notice на alert в случае, если пользователь не найден, изменит цвет: D