簡體   English   中英

重定向時加載引導程序模式

[英]load bootstrap modal on redirect

我有一個允許用戶登錄的引導程序模式。我希望未經身份驗證的用戶在他們所處的任何頁面上都可以彈出該模式。

會話控制器

  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

如果您發送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

(或者,您可以將redirect_to到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' %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM