要檢查用戶名/電子郵件可用性請執行以下操作:
使用https://github.com/posabsolute/jQuery-Validation-Engine
編輯對AJAX的validationsEngines-en.js文件調用,一個用於電子郵件看起來像下面這樣:
"ajaxEmailAvailable": {
"url": "/route_to_send_the_parameters",
// you may want to pass extra data on the ajax call
"alertTextOk": "* This email is available",
"alertText": "* This email is already taken",
"alertTextLoad": "* Validating, please wait"
},
確保您配置的routes.rb文件,以配合您要使用的路由,呼叫的默認操作是GET HTTP請求。
接着設置適當的動作在控制器來處理該請求(I包括在應用控制器的輔助,使得輸入值可以被消毒之前查詢在數據庫中:
CONTROLLER處理請求
def username_availability
scrubb = help.sanitize(params[:fieldValue], :tags => '')
user = User.find_by_email(scrubb)
if user.blank?
render :json => ["INPUT_ID", true , ""]
else
render :json => ["INPUT_ID", false , "This email is already taken"]
end
end
如果您不能確定正確的輸入ID的,看在通話過程中傳遞的參數的服務器日誌,並做了簡單的複製粘貼。默認情況下,請求將輸入ID和輸入值。
要訪問這個幫助增加以下內容:
應用控制器
def help
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::TextHelper
end
現在的形式本身,您輸入應閱讀如下:
<%= c.text_field :email, "data-validation-engine"=>"validate[required, custom[email], ajax[ajaxEmailAvailable]]" %>
按正常功能始終將AJAX調用作爲最後的驗證。
不要忘記在文檔的頭部[按照js的順序]包含jquery.js,jquery.validationEngine-en.js,jquery.validationEngine.js和validationEngine.jquery.css,並調用
<script type="text/javascript">$(function() {$("#FORM_ID").validationEngine();});</script>
如果您想爲用戶名執行此操作,請恰當地編輯上述內容。
我回答我的問題。我有它正在工作.. – Kumar 2011-12-29 19:50:05
您應該添加答案並稍後接受,以便有類似問題的其他人可以參考。 – 2011-12-30 08:07:51
這是'rails check username ajax'的谷歌搜索結果。你應該添加你的答案。 – 2012-01-07 05:30:04