2011-09-25 77 views
0

我做了一個帶有兩個用戶輸入,名稱和電子郵件的簡單的rails表單。我使用rails 3.1,因此我在form_for標記中使用了:remote => true。我還創建了create.js.erb並在users_controller.rb中添加了相應的format.js通過jquery提交rails表單時沒有完成驗證

添加以下行create.js.erb

$(document).ready(function(){ 
    $('body').html("<h1>Registration Successful</h1>") 
}); 

現在的問題是,當我點擊提交按鈕,帶有空字段,它不顯示驗證我在user.rb模型文件添加錯誤信息。相反,它會顯示我registration successful消息。

有沒有一些簡單的方法來規避這些問題在rails中。另外請注意,我對javascript非常不滿,所以請對我好。

控制器代碼創建

def create 
    @user = User.new(params[:user]) 

    respond_to do |format| 
     if @user.save 
     #UserMailer.registration_confirmation(@user).deliver 
     format.html { redirect_to @user, notice: 'User was successfully created.' } 
     format.js 
     else 
     format.html { render action: "new" } 
     format.js 
     end 
    end 
    end 
+0

向我們顯示您的控制器代碼。 – rwilliams

回答

1

它不會顯示錯誤的原因是因爲你沒有告訴它要,你只需告訴它寫「註冊成功」。你可以嘗試:

<% @user.errors.full_messages.each do |error| %> 
    $('body').prepend("<h1><%=error%></h1>"); 
<% end %> 

這假定您的控制器具有以下或類似的東西:

@user = User.create(params[:user]) 

希望這是足以讓你開始。如果不是,則需要一些控制器代碼來進一步提供幫助。

+0

這是不可能的,一旦點擊提交按鈕,在提交表單之前,驗證錯誤顯示,導軌方式 – Nikhil

+0

您將需要驗證客戶端和服務器。有一個有助於結合這兩者的gem,請查看client_side_validations gem。 https://github.com/bcardarella/client_side_validations – Gazler

+0

OMG !!我想我在其中一個電視廣播中看到了這個寶石。謝謝你提醒我。 – Nikhil