jqueryajax:当服务器端验证失败时,如何显示Flash错误消息?
我使用Jquery表单插件通过ajax提交表单。我已经在模型的服务器端设置了验证。现在,当验证失败时,我希望使用ajax向用户显示相同的flash[:error]消息。如果验证成功,我可以在请求完成后显示flash[:notice]。如何显示flash[:error]?我找到了这个jqueryajax:当服务器端验证失败时,如何显示Flash错误消息?,jquery,ruby-on-rails,validation,Jquery,Ruby On Rails,Validation,我使用Jquery表单插件通过ajax提交表单。我已经在模型的服务器端设置了验证。现在,当验证失败时,我希望使用ajax向用户显示相同的flash[:error]消息。如果验证成功,我可以在请求完成后显示flash[:notice]。如何显示flash[:error]?我找到了这个 如果有人有更好的解决方案,请发布,我会接受。从Rails应用程序返回HTML错误状态。在.ajaxForm()选项中,设置“error”回调以处理错误状态 以下是Rails控制器的外观: def update
如果有人有更好的解决方案,请发布,我会接受。从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({
成功:功能(数据){
/*对成功的回应*/
},
错误:函数(数据){
/*显示来自Rails应用程序的验证消息响应*/
$('form.ajax').prepend(''+data.responseText+'
');
}
});
您可以在中阅读有关错误回调的更多信息。
还有一个关于重构这些类型响应的好教程
$('form.ajax').ajaxForm({
success: function(data) {
/* response for success */
},
error: function(data) {
/* Display validation message response from Rails app */
$('form.ajax').prepend('<p class="errors">' + data.responseText + '</p>');
}
});