gpt4 book ai didi

javascript - rails : redirect with call to Ajax

转载 作者:行者123 更新时间:2023-11-29 21:28:21 25 4
gpt4 key购买 nike

我正在尝试将未登录的用户直接重定向到登录窗口,这是一个引导模式窗口。

我在 ApplicationController 中写了一个名为 logged_in_user 的方法:

def logged_in_user
unless !current_user.nil?
flash[:danger] = "Please log in"
redirect_to root_url
end
end

login_url 路由到 sessions#new,我定义如下:

(sessions_controller.rb)

def new
respond_to do |format|
format.html
format.js
end
end

这是 redirect_to root_url 指向的 View :

  <!-- Login Window -->
<div id="login-window" class="modal fade" role="dialog" aria-labelledby="login" aria-hidden="true"></div>

这是在 sessions#new 被调用时执行的 new.js.erb:

$("#login-window").html("<%= escape_javascript(render 'sessions/new') %>");

因此,登录表单,即 app/views/sessions 中的 _new.html.erb,一旦 sessions#new 被调用。

除了它必须作为 JS 而不是 HTML 来处理。所以我有以下链接,它在 _header.html.erb 中并且在所有 View 中都可用,以确保是这种情况:

<%= link_to "Log in", login_path, {remote: true, 'data-toggle' =>  "modal", 'data-target' => '#login-window'} %>

单击链接时效果很好。这就是为什么我选择在 logged_in_user 方法中执行 redirect_to root_url 而不是 redirect_to login_url 的原因,因为后一种方法会导致“缺少模板错误”。

但我真正想要的是将用户直接重定向到弹出窗口,而不是先将他们重定向到 root_url 并必须单击“登录”链接才能输入表单。换句话说,我需要一种通过发出 Ajax 请求以某种方式将用户重定向到 sessions#new 的方法,以便 sessions#new 可以作为 JS 处理。

我在 logged_in_user 方法中尝试了以下方法来实现所需的重定向,但均无效:

render js: "window.location = <%= escape_javascript(render 'sessions/new') %>"

render js: "window.location = '/sessions/new'"

redirect_to login_url, format: "js"

任何建议将不胜感激!

最佳答案

只需添加这个

<script type="text/javascript">
$(document).ready(function() {

if(window.location.href.indexOf('#login-window') != -1) {
$('#login-window').modal('show');
}

});

</script>

redirect_to root_url+"#login-window"

关于javascript - rails : redirect with call to Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944425/

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