gpt4 book ai didi

ruby-on-rails - 设计 Ajax 登录 : 'sessions#create' only render 'create.js.erb' when it succeed

转载 作者:行者123 更新时间:2023-12-04 22:20:48 25 4
gpt4 key购买 nike

我的目标是使用 Devise 以最少的模式更改实现 Ajax 登录解决方案。我已经部分达到了它,但是失败回调有一个问题。让我解释一下这个场景:

  • 在模态中显示登录表单 remote: true Rails/UJS 约定(OK);
  • 创建自定义 sessions Controller 并将设计指向它(确定);
  • 创建JS View 文件create.js.erb回复 sessions#create行动(问题);

  • 问题:我的 create.js.erb只包含一个 alert("Test ok") .当我提交 sessions#new使用正确的凭据形成文件 create.js.erb被执行, alert显示。但是如果凭据错误,则不会返回 401 Unauthorized状态和 create.js.erb被忽略。

    也许有人知道一个快速制作的技巧 create.js.erb登录失败时运行。这样我就不需要创建独立的 Ajax 脚本或更改整个 sessions Controller 。

    谢谢,

    环境:
    VERSIONS:
    Rails 4.0.2
    Devise 3.2.2

    自定义 session Controller :
    class Website::SessionsController < ::Devise::SessionsController
    respond_to :js # without it neither on success create.js.erb runs
    layout false # action `new` pure html which is rendered in a modal box
    end

    session /create.js.erb
    alert("Test ok");

    登录失败时的服务器日志:
    Started POST "/users/sign_in" for 127.0.0.1 at 2014-03-27 09:59:47 -0300
    Processing by Website::SessionsController#create as JS
    Parameters: {"utf8"=>"✓", "user"=>{"email"=>"", "password"=>"[FILTERED]"}, "commit"=>"Fazer login"}
    Completed 401 Unauthorized in 1ms

    最佳答案

    成功后,create.js.erb模板被渲染。

    如果不成功,无论出于何种原因,new.js.erb模板被渲染。

    解决这个问题的最简单方法是简单地添加 new.js.erb .这涉及对设备 Controller 的最少修改。

    可能值得注意的是,除了添加 remote: true 之外,我还必须进行以下调整。到表格,甚至得到 create.js.erb渲染。

    配置/初始化程序/设计 :

    # If http headers should be returned for AJAX requests. True by default.
    config.http_authenticatable_on_xhr = false

    config/routes.rb :
    devise_for :users, controllers: { sessions: 'users/sessions' }

    Controller /用户/sessions_controller.rb :
    class Users::SessionsController < Devise::SessionsController

    respond_to :html, :js

    end

    关于ruby-on-rails - 设计 Ajax 登录 : 'sessions#create' only render 'create.js.erb' when it succeed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689877/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com