#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.1
#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.1
Вопрос:
Я хотел бы иметь логику условий if, например:
var == 10 ? “10″ : “Not 10″
в ПРЕДСТАВЛЕНИИ Rails. То, что я попробовал, заключается в следующем:
<%= session[:id]=="out"? link_to "Sign in", login_path : link_to "Sign out", logout_path%>
Я знаю, что это выглядит странно, и неудивительно, что это не работает. Итак, если я хотел бы использовать троичное условие if в ПРЕДСТАВЛЕНИИ, как правильно поступить в моем случае?
———Еще одно условие———
Я хотел бы иметь два «link_to» в условии else
—— Сообщение об ошибке, которое я получил———
compile error
syntax error, unexpected tSTRING_BEG, expecting kDO or '{' or '('
...ession[:id]=="out" ? link_to "Sign in",
Ответ №1:
Попробуйте это (единственное различие — это пробел между "
и ?
и использование круглых скобок)
<%= session[:id]=="out" ? link_to("Sign in", login_path) : link_to("Sign out", logout_path) %>
Хотя круглые скобки в Ruby необязательны, в некоторых случаях они необходимы для поддержания приоритета оператора.
Троичные операторы IMHO трудно читать. Вы также могли бы сделать что-то более подробное:
<%= link_to("Sign in", login_path) if session[:id] == "out" %>
<%= link_to("Sign out", logout_path) if session[:id] != "out" %>
Комментарии:
1. 1 вместо этого использовал синтаксис <%= «outputtext» if a=b %> , спасибо.
Ответ №2:
session[:id]=="out"?
выглядит неправильно. Это должно быть
session[:id]=="out" ?
Кстати, если вам нужно больше ссылок в части else, переключитесь на if else. Это могло бы быть более чистым:
<% if condition %>
link
<% else %>
link
link
<% end %>