我希望if条件逻辑如下:
var == 10 ? “10″ : “Not 10″
在Rails VIEW上。我尝试的是:
<%= session[:id]=="out"? link_to "Sign in", login_path : link_to "Sign out", logout_path%>
我知道它看起来很奇怪,并且毫不奇怪它不起作用。所以,如果我想在VIEW上使用三元if条件,在我的情况下,正确的方法是什么?
---------还有一个条件---------
我希望在其他条件中两个“link_to”
-----我收到的错误信息--------
compile error
syntax error, unexpected tSTRING_BEG, expecting kDO or '{' or '('
...ession[:id]=="out" ? link_to "Sign in",
答案 0 :(得分:12)
试试这个(唯一的差异是"
和?
之间的空格以及括号的使用)
<%= session[:id]=="out" ? link_to("Sign in", login_path) : link_to("Sign out", logout_path) %>
在Ruby中,Altough括号是可选的,在某些情况下需要保持运算符优先级。
恕我直言三元运算符很难阅读。你也可以做一些更冗长的事情:
<%= link_to("Sign in", login_path) if session[:id] == "out" %>
<%= link_to("Sign out", logout_path) if session[:id] != "out" %>
答案 1 :(得分:3)
session[:id]=="out"?
看起来不对。它应该是
session[:id]=="out" ?
顺便说一下,如果你需要更多的链接在else部分切换到if else。它可能更干净:
<% if condition %>
link
<% else %>
link
link
<% end %>