【问题标题】:load bootstrap modal on redirect在重定向上加载引导模式
【发布时间】:2014-05-30 04:07:39
【问题描述】:

我有一个允许用户登录的引导模式。我希望未经身份验证的用户在他们所在的任何页面上都可以弹出该登录模式。

会话控制器

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

会话/new.js.erb

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

如果用户点击此控制器,我希望他们看到登录模式。我想我会尝试将他们重定向到new_session_path。这不起作用,我收到了缺少模板的错误。

  def new
    if current_user
      @image = Image.new
    else
      redirect_to new_session_path
    end
  end

【问题讨论】:

    标签: javascript ruby-on-rails twitter-bootstrap


    【解决方案1】:

    如果你发送一个 html 请求,你应该得到 html。 Rails 正在寻找一个 html 模板,但没有找到。

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

    before_action :verify_user, only: [:new]
    
    def verify_user
      redirect_to new_session_path and return unless current_user
    end
    

    (或者您可以重定向到 root_path 或某处并在页面加载时触发模式。)

    至于模式,我会监听你想要限制的链接的点击。

    # 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' %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多