0

Я пытаюсь проверить мою форму с помощью самообслуживания ClientSideValidations и работает с наличием true, но я также пытаюсь проверить его с уникальностью, но не работает до тех пор, пока форма не будет суммирована и просто покажет сообщение один раз. Я добавил // = требуется rails.validations в aplicatios.js и установлен камень это моя форма:validations with ClientSideValidations gem

<%= form_for(@category, validate: true) do |f| %> 
    <% if @category.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@category.errors.count, "error") %> prohibited this category from being saved:</h2> 

     <ul> 
     <% @category.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 

    </div> 
    <div class="field"> 
    <%= f.label :color %><br> 
    <%= f.color_field :color %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

и моя модель:

class Category < ActiveRecord::Base 
    has_many :has_categories 
    has_many :articles, through: :has_categories 
    validates :name, presence: true, uniqueness: true 

end 

ответ

1

Цитирование из оригинального GitHub документ: Объекты обертки и удаленные валидации
Это имеет смысл. Я не использовал это раньше, но IMO вы не можете просто проверить уникальность только на стороне клиента, это нужно сделать с помощью AJAX, чтобы сравнить данные, которые вы передаете, с данными соответствующей модели на вашем сервере. Один из способов добиться этого можно, установив remote: true в вашей форме, которая превратится в запрос AJAX.

Обновление - После битвы за бит, я, наконец, наткнулся на этот вопрос here. В нем указано, что уникальность отключена по умолчанию для предотвращения Brute force attack. Следовательно, вам необходимо выполнить эту проверку с помощью AJAX.
Вы также можете посмотреть на this, если это имеет смысл для вас. Я не мог заставить его работать.

+0

благодарит за ответ. Я смотрел этот учебник https://www.youtube.com/watch?v=n_yasDxb8sk и все в порядке, но проверки на уникальность не работают для меня. Я не знаю, пропущу ли я что-то. – LuisC

+0

@LuisC Мне нужно будет увидеть полный код вашей формы. –

+0

ok Полный код моей формы находится в описании – LuisC