如果未设置session[:shopper]
,我想更改页面,但如果session[admin] != "true"
我还想更改页面。
换句话说,如果设置了session[:shopper]
或session[:admin]
,则显示页面。
如何拒绝我if
的第一个陈述?
到目前为止,这是我的代码:
<%if session[:shopper] %> (this is what I want to deny)
<%puts "shopper IS NIL----------------------------------------------"%>
<script type="text/javascript">
window.location.href="/home"
</script>
<%elsif session[:admin] != "true"%>
<%puts "ADMIN is NIL----------------------------------------------"%>
<script type="text/javascript">
window.location.href="/home"
</script>
<%end%>
答案 0 :(得分:3)
您确定这是您想要在视图中执行的操作吗?看起来好像用户可以通过关闭Javascript来绕过这个逻辑。也许最好在你的控制器中做这样的事情:
if session[:shopper].nil?
logger.info 'shopper is NIL'
redirect = true
elsif session[:admin] != 'true'
logger.info 'ADMIN is NIL'
redirect = true
end
if redirect
redirect_to '/home'
end
答案 1 :(得分:0)
您可以if
或blank?
empty?
<% if session[:shopper].blank? %> (this is what I want to deny)
<%puts "shopper IS NIL----------------------------------------------"%>
<script type="text/javascript">
window.location.href="/home"
</script>
<% elsif session[:admin] != "true"%>
<% puts "ADMIN is NIL----------------------------------------------"%>
<script type="text/javascript">
window.location.href="/home"
</script>
<% end %>
答案 2 :(得分:0)
如果我理解正确,如果他们不是管理员或者他们没有以购物者身份登录,那么你想要重定向吗?试试defined?
我会设置一个标志。例如:
redirect = false;
<%if session[:shopper] == nil || (defined? session[:shopper] == "nil") %>
<%puts "shopper IS NIL----------------------------------------------"%>
redirect = true;
<%elsif session[:admin] != "true"%>
redirect = true;
<%end%>
<%if redirect == true %>
<script type="text/javascript">
window.location.href="/home"
</script>
<%end%>
他们会留下来:
其他选择:
session[:shopper].nil?