2016-12-12 1 views
0

У меня есть следующая модель, которая вызывает ошибку, если кто-то пытается использовать фразу в черном списке при создании пули. В качестве кода в настоящее время он позволяет отправить форму, а затем отобразить страницу ошибок рельсов с сообщением об ошибке ниже.Как сделать свое пользовательское сообщение об ошибке препятствовать отправке формы вместо отображения страницы ошибок rails?

Как сделать так, чтобы форма не была отправлена ​​и отображена ошибка/причина невозможности отправки на фактическую страницу формы?

class LandingPage < ActiveRecord::Base 

validate :check_for_blacklisted_slug 

private 

def check_for_blacklisted_slug 
    blacklist = ['not this', 'or this', 'def not this'] 
    blacklist.each do |phrase| 
    if self.slug == phrase.parameterize 
     errors.add(:slug, "This slug is reserved. Please pick another slug.") 
    end 
    end 
end 
end 
+0

im confused now, потому что, когда я добавляю 's' в конец, это вызывает ошибку аргумента. «Вам нужно предоставить хотя бы одну проверку» Но код, поскольку он в настоящее время «проверяет», на самом деле запускает метод «черный список», « – Verty00

ответ

0

Вы не можете сделать это с помощью рельсов как таковых. Вам нужен JQuery для этого (или JS или какие-то рамки JS)

Во-первых, создать контроллер с действием, где вы будете проверять ввод и реагирующий с кодом 400x состояния, если введено недопустимое. С jQuery на .focusout вы делаете запрос AJAX к вашему действию, если запрос успешный, вы ничего не делаете, иначе вы добавляете ошибки ниже вашего ввода.

Это будет связано с большим количеством документации для чтения в формате Google и чтения, но я надеюсь, что, по крайней мере, показал вам путь.

И в случае, если вам интересно, все ли это необходимо для такой простой задачи? К сожалению, да. Это станет намного проще, так как вы обернете свою голову вокруг этого

+1

[jQuery Validation] (https://jqueryvalididation.org/) плагин действительно хорош в этом , – mysmallidea

Смежные вопросы