【发布时间】:2011-02-26 19:26:17
【问题描述】:
我正在使用 Jquery 表单插件通过 ajax 提交表单。我已经在我的模型中的服务器端设置了验证。现在,当验证失败时,我想使用 ajax 向用户显示相同的 flash[:error] 消息。如果验证成功,我可以显示 flash[:notice],因为它在请求完成后可用。如何显示 flash[:error]?
【问题讨论】:
标签: jquery ruby-on-rails validation
我正在使用 Jquery 表单插件通过 ajax 提交表单。我已经在我的模型中的服务器端设置了验证。现在,当验证失败时,我想使用 ajax 向用户显示相同的 flash[:error] 消息。如果验证成功,我可以显示 flash[:notice],因为它在请求完成后可用。如何显示 flash[:error]?
【问题讨论】:
标签: jquery ruby-on-rails validation
【讨论】:
从 Rails 应用返回 HTML 错误状态。在.ajaxForm() 选项中,设置“错误”回调来处理错误状态。
您的 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('<p class="errors">' + data.responseText + '</p>');
}
});
您可以在jQuery API 中阅读有关error 回调的更多信息。
Paydrotalks 也有关于重构这些类型响应的很好的教程。
【讨论】: