Дело в том, что ERB должен преобразовать код ERB в код JS, чтобы выражение в блоке if
оценивалось ERB во время рендеринга (в противном случае он не смог бы преобразовать код в JS).
Теперь, если у вас был ТОЛЬКО код JS, подобный следующему:
$('.loading').hide()
if (id && session) {
alert(something);
}
Тогда да, что-то было бы странным, если бы он вычислял что-либо в блоке if
, потому что он должен был сбоить session
.
Я бы просто немного переписал ваш код:
$('.loading').hide()
if ("<%= @id %>" && "<%= @session %>") {
<% if @session %>
alert("<%= @id %> <%= @session[:open] %>")
<% end %>
}
Кстати, закомментированный код все еще должен оцениваться ERB во время рендеринга.Поэтому, если вы собираетесь закомментировать его в файле .js.erb
, вам нужно закомментировать его с использованием синтаксиса ERB, а не Javascript.
<%
=begin %>
$('.loading').hide()
if ("<%= @id %>" && "<%= @session %>") {
<% if @session %>
alert("<%= @id %> <%= @session[:open] %>")
<% end %>
}
<%
=end %>
Или для отдельных строк кода:
<%# your_ruby_code_goes_here %>