2011-05-30 53 views
0

我創建了一個用於創建'用戶'模型的jQuery Mobile表單。表單將所有信息正確地發回,但我不確定如何處理相應控制器操作中的成功和失敗情況。我通常會使用:Rails中的jQuery Mobile表單處理

# POST /user 
def create 
    @user = User.create(params[:user]) 

    respond_to do |format| 
    format.mobile { @user.valid? ? redirect_to(root_url) : render(action: 'new') } 
    end 
end 

但是,這會導致jQuery Mobile中出現奇怪的動畫(即,在錯誤時將屏幕滑出)。任何想法我應該如何渲染錯誤?

謝謝!

回答

1

我不知道手機,但如果這基本上是ajax請求,那麼當出現問題時您需要返回@user.errors.to_json。如果這只是一個普通的頁面請求,那麼您可以遍歷視圖中的@user.errors以顯示您想要的錯誤。

我也不會推薦使用? :您的format.mobile區塊內的運營商。在respond_to以及各個格式塊之外執行if語句,以便您不必使用? :當您添加更多格式塊時,運算符會一遍又一遍。如果你有3個格式塊,你會有3個? :語句而不僅僅是1。

如果您只打算使用1種格式,則可以在create動作中使用respond_with,然後在控制器頂部使用respond_to :mobile。你應該默認這樣做,因爲它只是起作用,它會清理你的控制器操作。

此外,您不想立即致電User.create。您應該使用User.new,然後在您的主if語句中調用@user.save以確定如何處理錯誤。這消除了@user.valid?的呼叫,我認爲這更正確。