我正在使用jquery将设计的注册形式加载为弹出窗口。问题是我无法在弹出窗口中加载设备的错误消息。
如果我点击空注册表单,我会被重定向到另一个页面,在那里我看到错误消息。
我已经完成了设计的github帖子,但找不到我要找的解决方案。
我在应用程序助手中创建了一个方法,以便表单助手中的<%= devise_error_messages! %>
代码正常工作。
应用程序帮助程序代码如下: -
def devise_error_messages!
resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
end
我知道这有什么不对,但无法弄清楚是什么。任何人都可以帮我解决这个问题。
更新
我认为由于当我点击提交按钮时弹出框中没有显示错误,因此注册控制器的创建操作可能存在问题。将尝试覆盖设计注册控制器的默认创建操作。让我们看看它是否适用于这些变化。
更新2
我在上面的更新中提到的更改虽然不起作用,但它给触摸器提供了一个非常接近解决方案的方法:)
仍在等待一些帮助。
谢谢,
答案 0 :(得分:3)
您是否重写了RegistrationsController的创建操作?如果resource.save失败你就可以做到这一点
render :json => { :success => false, :data => resource.errors.full_messages }
应该只将错误消息传回你的jquery脚本。例如:
$('#sign_up_form').submit(function() {
$.post(this.action, function(response) {
if (response.success) {
//... do a redirect or something cuz we're now registered
} else {
// do something with your errors
$('#sign_up_form').prepend(response.data);
}
}, 'json');
});