2016-10-25 24 views
0

我想驗證我的表單與寶石ClientSideValidations,並與存在真正的工作,但我想驗證與唯一性,但不工作,直到表格被求和,只顯示消息一次。我加了// =需要aplicatios.js rails.validations並安裝了寶石 這是我的表格:驗證與ClientSideValidations寶石

<%= 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