2011-05-30 61 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?的呼叫,我认为这更正确。