2014-02-28 42 views
0

我在我的Ruby on Rails項目中有幾個表單,都需要驗證。對於創建用戶的人來說,f.error_notification方法對於顯示錯誤非常有效,我相信因爲它與用戶模型一起工作。不過,我有另一種編輯密碼的方式,這種方式工作不正確。我試圖使用所有相同的方法,以便在網站上的所有錯誤消息顯示相同的地方。我遇到的問題是,如果密碼不匹配(或者還有其他類型的問題),f.error_notification在頂部顯示爲紅色:Please review the problems below.應該如此。但它實際上並不顯示任何問題。Ruby中的簡單表單驗證工作不正確

這是形式:

<h2>Change your password</h2> 

<%= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %> 
    <%= f.error_notification %> 
    <%= f.hidden_field :reset_password_token %> 

    <div><%= f.label :password, "New password" %><br /> 
    <%= f.password_field :password, :autofocus => true, required: true %></div><br /> 

    <div><%= f.label :password_confirmation, "Confirm new password" %><br /> 
    <%= f.password_field :password_confirmation, required: true %></div> 
    <br> 
    <%= button_tag(type: 'submit', class: "btn doc-action-btn btn-success") do %> 
     <i class="glyphicon glyphicon-check"></i> Change my password 
    <% end %> 
<% end %> 

我不知道還有什麼可以張貼代碼明智的,使其更清楚,但我很高興我的更新後,如果有別的東西,我可以補充。我還應該注意到上面的表格是由Devise生成的。爲了一致性,我從Devise錯誤消息切換到Rails,因爲我們在自定義表單中的其他地方使用了Rails。謝謝!

回答

0

您必須使用devise_error_messages!方法。它是專門設計的方法,負責顯示錯誤。除非完全自定義它,否則不能來回翻轉。

如果萬一你想自定義,你可以檢查此https://github.com/plataformatec/devise/wiki/Override-devise_error_messages!-for-views

+0

我試圖避免這種情況,其實我用'f.error_notification'取代它,正如我所說的,以保持一致性。有沒有辦法自定義設計錯誤消息,以便它們顯示在每個輸入旁邊而不是頂部? – user3254621