Javascript 重定向时加载引导模式

Javascript 重定向时加载引导模式,javascript,ruby-on-rails,twitter-bootstrap,Javascript,Ruby On Rails,Twitter Bootstrap,我有一个引导模式,允许用户登录。我希望未通过身份验证的用户在他们所在的任何页面上都能看到该标志模式弹出窗口 会话控制器 def new respond_to do |format| format.html format.js end end session/new.js.erb $("#modal-window").html("<%= escape_javascript(render 'sessions/new') %>"); 如果

我有一个引导模式,允许用户登录。我希望未通过身份验证的用户在他们所在的任何页面上都能看到该标志模式弹出窗口

会话控制器

  def new
    respond_to do |format|
      format.html
      format.js
    end
  end
session/new.js.erb

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

如果您发送了一个html请求,您应该返回html。Rails正在寻找html模板,但找不到

我建议对任何要限制的控制器或操作使用before_操作。这需要制作一个用于登录的html模板

before_action :verify_user, only: [:new]

def verify_user
  redirect_to new_session_path and return unless current_user
end
(或者您可以将_重定向到根路径或某处,并在页面加载时触发模式。)

至于模态,我会倾听你想要限制的链接上的点击

# users.js.coffee
$ ->
  $('body.not-signed-in a.require-sign-in').click, ->
    $.get $('body').data('sign-in-path')
    return false
这意味着您必须在html中添加这些类

<body class="<%= current_user ? 'signed-in' : 'not-signed-in' %>" data-sign-in-path="<%= new_session_path %>">
  <%= link_to 'link', some_path, class: 'require-sign-in' %>

<body class="<%= current_user ? 'signed-in' : 'not-signed-in' %>" data-sign-in-path="<%= new_session_path %>">
  <%= link_to 'link', some_path, class: 'require-sign-in' %>