Новичок: троичный синтаксис условия "если" в VIEW - PullRequest
7 голосов
/ 19 октября 2011

Я хотел бы иметь логику условия if, такую ​​как:

var == 10 ? “10″ : “Not 10″

на Rails VIEW. Я попробовал следующее:

<%= session[:id]=="out"? link_to "Sign in", login_path : link_to "Sign out", logout_path%>

Я знаю, это выглядит странно, и неудивительно, что это не работает. Итак, если я хотел бы использовать троичное условие if в VIEW, как правильно поступить в моем случае?

--------- Еще одно условие ---------

Я хотел бы иметь два"link_to" в иначе условие

----- Сообщение об ошибке, которое я получил --------

compile error

syntax error, unexpected tSTRING_BEG, expecting kDO or '{' or '('
...ession[:id]=="out" ? link_to "Sign in",

Ответы [ 2 ]

12 голосов
/ 19 октября 2011

Попробуйте это (единственная разница - это пробел между " и ? и использование скобок)

<%= session[:id]=="out" ? link_to("Sign in", login_path) : link_to("Sign out", logout_path) %>

В Ruby необязательны круглые скобки, которые в некоторых случаях необходимы для сохранения приоритета оператора.

ИМХО троичные операторы трудно читать. Вы также можете сделать что-то более подробное:

<%= link_to("Sign in", login_path) if session[:id] == "out" %>
<%= link_to("Sign out", logout_path) if session[:id] != "out" %>
3 голосов
/ 19 октября 2011
session[:id]=="out"?

выглядит неправильно. Должно быть

session[:id]=="out" ?

Кстати, если вам нужно больше ссылок в части else, переключитесь на if else. Это может быть более чистым:

<% if condition %>
  link
<% else %>
  link
  link
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...