【问题标题】:jQuery Mobile Form Handling in RailsRails 中的 jQuery Mobile 表单处理
【发布时间】:2011-05-30 07:22:00
【问题描述】:
我创建了一个用于创建“用户”模型的 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 中出现奇怪的动画(即出现错误时将屏幕滑出)。任何想法我应该如何呈现错误?
谢谢!
【问题讨论】:
标签:
jquery
ruby-on-rails
jquery-mobile
【解决方案1】:
我不了解手机,但是如果这基本上是一个ajax请求,那么你需要在出现问题时返回@user.errors.to_json。如果它只是一个普通的页面请求,那么您可以在您的视图中迭代 @user.errors 以显示您想要的错误。
我也不建议使用 ? : format.mobile 块内的运算符。在respond_to 和您的各个格式块之外执行if 语句,这样您就不必使用? : 运算符一遍又一遍地添加更多格式块。如果你有 3 个格式块,你会有 3 个 ? : 语句,而不仅仅是 1 个 if。
如果您只打算使用一种格式,您可以在create 操作内使用respond_with,然后在控制器顶部使用respond_to :mobile。您应该默认执行此操作,因为它可以正常工作并清理您的控制器操作。
另外,您不想立即致电User.create。您应该使用User.new,然后在您的主要if 语句中调用@user.save,以确定如何处理错误。这消除了@user.valid? 的调用,我认为更符合习惯用法。