Jquery AJAX:如何在服务器端validation失败时显示Flash错误消息?
我正在使用Jquery表单插件通过ajax提交表单。 我在我的模型中在服务器端设置了validation。 现在,当validation失败时,我想使用ajax向用户显示相同的flash [:error]消息。 如果validation成功,我可以在请求完成后显示闪存[:notice],因为它可用。 我如何显示flash [:error]?
从Rails应用程序返回HTML错误状态。 在.ajaxForm()
选项中,设置’error’回调以处理错误状态。
以下是您的Rails控制器的外观:
def update @widget = Widget.find(params[:id]) if @widget.update_attributes(params[:widget]) respond_to do |format| format.js { head :ok } end else respond_to do |format| format.js { render :json => @widget.errors.full_messages.join(' '), :status => 400 } end end end
这就是你的.ajaxForm()
调用可能是什么样的(同样适用于.ajaxSubmit()
):
$('form.ajax').ajaxForm({ success: function(data) { /* response for success */ }, error: function(data) { /* Display validation message response from Rails app */ $('form.ajax').prepend('' + data.responseText + '
'); } });
您可以在jQuery API中阅读有关error
回调的更多信息。
Paydrotalks还有一个很好的教程,可以重构这些类型的响应。