我使用Devise,因此在我想要隐藏非登录用户的内容时,我只想添加一个快速的内容:
<% if user_signed_in? %>
在视图的一部分周围瞧瞧。
现在的问题是,我有一个按钮,可以触发页面上的切换JS动作。
这是我的HTML:
<div id="togglesidebar" class="pull-right">
<button class="btn btn-default btn-lg btn-primary"><i class="fa fa-child"></i> Submit News</button>
</div>
这是JS:
var ready;
ready = function() {
// This is the Sidebar toggle functionality
var toggleSidebar = $("#togglesidebar");
var primary = $("#primary");
var secondary = $("#secondary");
toggleSidebar.on("click", function(){
if(primary.hasClass("col-sm-9")){
primary.removeClass("col-sm-9");
primary.addClass("col-sm-12");
secondary.css('display', 'none');
}
else {
primary.removeClass("col-sm-12");
primary.addClass("col-sm-9");
secondary.css('display', 'inline-block');
}
});
};
$(document).ready(ready);
$(document).on('page:load', ready);
我想要发生的是,如果current_user没有登录,他们应该被重定向到“请登录”&#39;在侧边栏切换之前的模态。
然后,在成功登录后,它应该将它们重定向回同一页面并切换补充工具栏。
我该怎么做?
答案 0 :(得分:1)
您可以使用erb设置js变量,如下所示:
var user_signed_in = <%= user_signed_in? %>
然后在你的js中使用那个变量来确定你是否应该显示模态等。
答案 1 :(得分:0)
您可以直接在视图中混合JS和Rails,如下所示:
<script type="text/javascript">
var ready;
ready = function() {
// This is the Sidebar toggle functionality
var toggleSidebar = $("#togglesidebar");
var primary = $("#primary");
var secondary = $("#secondary");
toggleSidebar.on("click", function(){
<% if user_signed_in? %>
if(primary.hasClass("col-sm-9")){
primary.removeClass("col-sm-9");
primary.addClass("col-sm-12");
secondary.css('display', 'none');
}
else {
primary.removeClass("col-sm-12");
primary.addClass("col-sm-9");
secondary.css('display', 'inline-block');
}
<% else %>
window.location.replace("<%= escape_javascript(login_path) %>");
<% end %>
});
};
$(document).ready(ready);
$(document).on('page:load', ready);
</script>