Rails 5 - Пользовательская проверка с одним сообщением об ошибке - PullRequest
1 голос
/ 23 сентября 2019

Я хочу добавить несколько условий к действительным, но я хочу просмотреть только одно сводное сообщение об ошибке.

validates :floor, presence: true, numericality: { only_integer: true }, length: { maximum: 2 }

Как показывать только одно сообщение при любой ошибке, например: «Требуется этаж, должно быть число ...»

Кроме того, когда я использую:

if @posts.valid?
   @posts.save
   redirect_to room_path
else
   render :new
end

Браузер отобразит новое с сообщением, но URL будет http://localhost:3000/posts,, это не http://localhost:3000/posts/new Это проблема, когда пользователь обновляет страницу =>, он вернет страницу индекса (не новую страницу).Как я могу это исправить?

1 Ответ

2 голосов
/ 23 сентября 2019

Вы можете написать собственный валидатор:

validate :validate_floor

private
def validate_floor
  return if floor.present? && floor.scan(/\D/).empty? && floor.length <= 2
  errors.add(:floor, 'Floor is required, must be number...')
end

Другой вопрос;

Когда вы отправляете форму, запрос переходит к действию create.Из-за действия create путь перенаправляется на http://localhost:3000/posts.Когда в форме есть ошибка, форма повторно отображается с render :new.Но URL не меняется, потому что нет перенаправления.На самом деле, здесь нет ошибки.Так и должно быть.

...