2015-11-24 58 views
-1

當前端的導軌形式失敗時,JavaScript如何處理?例如數字錯誤失敗或者不符合要求:true選項。導軌如何處理表單驗證?

我想添加一個回調函數。有沒有什麼辦法來執行一些JavaScript的失敗?

回答

2

驗證中構建的Rails不在前端(客戶端)上運行,它在服務器上完成。

如果你想做JavaScript驗證,你需要找到一個gem或使用jQuery庫,或者自己寫驗證代碼。

正常方式表單驗證完成後用香草Rails的時候就是這個樣子

  1. 無效表單內容提交到控制器
  2. 控制器使用的內容,使ActiveRecord的對象
  3. 的控制器嘗試將對象保存到數據庫,啓動一系列以檢查對象的有效性開始的步驟
  4. 模型的驗證程序認爲它無效,並用錯誤消息「裝飾」對象,指定以何種方式這是無效的。
  5. 控制器發現保存失敗並呈現原始窗體的視圖,併爲該視圖提供該對象,現在提供了錯誤消息。
  6. 呈現窗體的視圖會檢查對象是否顯示錯誤消息,如果它看到任何有用的信息,則顯示給用戶。它還會使用用戶先前輸入的數據填充字段,以便從對象中獲取數據。
3

在導軌形式上渲染錯誤時沒有涉及JavaScript。顯示錯誤的方式由名爲field_error_proc的函數確定,具體爲ActionView::Base.field_error_proc。您可以查看Ryan Bates關於它的railcast

如果您通過AJAX提交表單,則可以附加ajax:success事件的偵聽器。否則,只有(醜陋的),這樣我可以想像是做這樣的事情:

$(document).on('app:form-has-errors', function() { //do what you have to do}和視圖

<script>$(document).trigger('app:form-has-errors');</script>如果在表單中的對象有錯誤(@your_object.errors.any?)。

我不認爲這是可能的另一種方式,因爲錯誤提交和重新呈現是完整的http請求,將清除您可能綁定到文檔的任何事件。