Что не так с моим простым If Else? - PullRequest
5 голосов
/ 04 августа 2011

Я новичок в RoR / Ruby и, похоже, не могу заставить работать самую простую вещь. (поверьте мне, я ищу в Google и перечитываю документы, я не знаю, что не так)

Итак, в моем главном окне я добавил следующее:

<%= if 1>2 %>
  <%=     print "helllloooo" %>
<%= else %>
  <%= print "nada" %>
<%= end %>

И ничего не выводится ..

** UPDATE **

Хорошо, вот мой новый ИСПРАВЛЕННЫЙ код, и он ЕЩЕ НЕ РАБОТАЕТ

<th>
  <% if 1 > 2 %>
    <%= print "helllloooo" %>
  <% else %>
    <%= print "nada" %>
  <% end %>  
</th>

Ответы [ 5 ]

23 голосов
/ 04 августа 2011

Ваши заявления не предназначены для отображения, поэтому вместо

<%= if 1>2 %>

напишите

<% if 1 > 2 %>

То же самое для else и end


РЕДАКТИРОВАТЬ

<% if 1 > 2 %>
<%= "helllloooo" %>  #option 1 to display dynamic data
<% else %>
nada                 #option 2 to display static data
<% end %>
10 голосов
/ 04 августа 2011

Вам не нужно использовать print или даже ERB для текста. Кроме того, ваши операторы if, else и end должны быть <%, а не <%=:

<% if 1 > 2 %>
helllloooo
<% else %>
nada
<% end %>
3 голосов
/ 04 августа 2011

<%= уже означает «печать в ответ HTML» в ERB (собственный язык шаблонов Ruby).

Так что <%= print '...' означает «печать возвращаемого типа печати« ... »», чтоНичего.

Правильный код будет выглядеть так:

<% if 1>2 %>
<%= "helllloooo" %>
<% else %>
<%= "nada" %>
<% end %>

На самом деле вы даже можете опустить <%=, потому что вы просто печатаете строки (не произвольные объекты):

<% if 1>2 %>
helllloooo
<% else %>
nada
<% end %>
2 голосов
/ 04 августа 2011

Проблема =. Вместо этого используйте <%. <%= для печати чего-либо, а <% для инструкций.

1 голос
/ 23 августа 2013

для использования динамического контента: <% =%>

...