[英]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.