Выносит валидации на html в рельсах - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь добиться, как поместить ошибку проверки из бэкэнда в переднюю часть в рельсы

Вот мой user.rb:

class User < ActiveRecord::Base
  has_secure_password

  EMAIL_REGEX = /\A([^@\s]+)@((?:[a-z0-9]+\.)+[a-z]+)\z/i
  validates :name, presence: true
  validates :email, presence: true, uniqueness: {case_Sensitive:false }, format: { with: EMAIL_REGEX}
  validates :password, presence: true, length: { minimum: 5 }

  before_save :email_lowercase

  # makes email lowercase before user submits

  def email_lowercase
    email.downcase!
  end

end

, а вот мой user_controller.rb :

  def create
    user = User.create(user_params)
    if user.valid?
      user.save
      redirect_to 'index'
    else
      user.errors.messages
      redirect_to '/users/new'
    end
  end

и это моя форма html:

<form action="/users" method="post">
    <%= hidden_field_tag :authenticity_token, form_authenticity_token %>

    <input type="text" name="user[name]" placeholder="Name"><br>
    <input type="text" name="user[email]" placeholder="Email"><br>
    <input type="password" name="user[password]" placeholder="Password"><br>
    <input type="password" name="user[confirm_pw]" placeholder="Confirm PW">
    <input type="submit" value="Join">

</form>

Как я могу размещать валидации для html в рельсах?

1 Ответ

3 голосов
/ 17 июня 2020

См. Раздел о добавлении проверок в руководстве Начало работы с Rails . Там вы найдете хороший пример. Для своей формы вы можете добавить следующее:

  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2>
        <%= pluralize(@user.errors.count, "error") %> prohibited
        this user from being saved:
      </h2>
      <ul>
        <% @user.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

Чтобы это работало, вам также нужно будет внести некоторые изменения в свой контроллер, чтобы у вас была доступна переменная экземпляра @user .

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