设计轨道 3 和遥控器 =>真的

发布于 2024-10-27 05:25:12 字数 532 浏览 1 评论 0原文

我在使用 AJAX 登录设备时遇到问题。我正在使用 :remote =>; true 选项和 javascript 帮助器的 jQuery 版本 (https://github.com/rails/jquery-ujs)。 当用户输入正确的信息时,会话视图中的 create.js.erb 就会被渲染。这没问题,因为我可以在这个文件中使用 JS 重定向我的用户。但当发生错误时,例如用户输入错误信息,响应中只有闪现消息,并带有错误代码401 - Unauthorized。因此,不会呈现任何视图或 create.js.erb 或其他内容。 但我想处理这个消息,通过将其显示在侧面,以便用户得到一些反馈,出了什么问题。

我还尝试使用 respond_to :js 实现自己的自定义控制器,并使用 Warden 身份验证的 :recall 方法。但这不起作用。

有人知道解决这个问题的一些最佳实践吗?或者我应该避免使用这个辅助方法而只使用纯 jQuery 进行 ajax 调用?

谢谢, 无尾礼服

I have a problem using devise with an AJAX login. I'm using the :remote => true option and the jQuery version of the javascript helpers (https://github.com/rails/jquery-ujs).
Ehen the user enters the correct informations, my create.js.erb inside the sessions view is rendered. This is ok, 'cause i can redirect my user using JS in this file. But when an error occurs, e.g. the user enters false information, only the flash messages are in the response with an error code 401 - Unauthorized. So, no view or create.js.erb or sth else is rendered.
But I want to handle this message, by displaying it on the side, so that the users gets some feedback, whats wrong.

I also tried to implement my own custom controller with respond_to :js, and playing with the :recall method of the warden authentication. But it doesn't work.

Does anybody know some best practices to solve this problem? Or should I avoid this helper methods and just use pure jQuery for the ajax calls?

thx,
tux

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一袭水袖舞倾城 2024-11-03 05:25:12

您可以在 Rails 3 中使用 jQuery 事件“ajax:error”。只需将该事件绑定到您的表单即可。

jQuery(function($) {
  $("#new_model").bind("ajax:error", function(event, data, status, xhr) {
    alert("something went wrong");
  });
});

查看这篇博客文章有关可用活动的更多详细信息。

You could use the jQuery event "ajax:error" in rails 3. Just bind the event to your form.

jQuery(function($) {
  $("#new_model").bind("ajax:error", function(event, data, status, xhr) {
    alert("something went wrong");
  });
});

Take a look at this blog post for more details on what events are available.

一身骄傲 2024-11-03 05:25:12

这是我的版本,

<script>
  $(document).ajaxError(function(e, XHR, options){
    if (XHR.status == 401){
      window.location.replace("<%= new_user_session_path %>");
    }
  });
</script>

它会自动将用户重定向到登录页面,并且适用于页面上的所有元素。

Here's my version

<script>
  $(document).ajaxError(function(e, XHR, options){
    if (XHR.status == 401){
      window.location.replace("<%= new_user_session_path %>");
    }
  });
</script>

It automatically redirects the user to the login page and works for all elements on the page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文