Разница между <% ...%> и <% = ..%> в рельсах 3 - PullRequest
6 голосов
/ 25 января 2012

У меня есть метод теста в файле helpers / application_helper.rb:

def test
  concat("Hello world")
end

Затем в index.html.erb я вызываю как:

Blah
<% test %>

Отображение браузера:

Бла Привет, мир

Это нормально, но если я изменю

<%= test %>

отображение браузера:

БлаHello worldBlah Hello world

Это дублирует всю страницу.Не знаю почему?Какая разница между ними?Спасибо за вашу помощь!

Ответы [ 5 ]

14 голосов
/ 25 января 2012

Обычно <%%> - это фрагмент кода Rails (т. Е. Начало условия, конец условия и т. Д.), Тогда как <% =%> фактически вычисляет выражение и возвращает значение на страницу.

10 голосов
/ 23 июля 2013

В чем разница?

<% %> давайте оценим код рельсов с вашей точки зрения

<%= %> давайте оценим код рельсов с вашей точки зрения Ивыводит результат на странице

Пример # 1: Знак равенства аналогичен «ставит», поэтому:

<%= "Hello %> 

... совпадает с:

<% puts "Hello" %> 

Пример № 2:

<% if !user_signed_in? %>
    <%= "This text shows up on the page" %>
<% end %> 

#returns "This text shows up on the page" if the user is signed in
10 голосов
/ 25 января 2012

С документы Rails , concat должны использоваться только в кодовом блоке <% %>.Когда вы используете его в <%= %> кодовом блоке, вы видите его дважды, потому что concat добавляет предоставленный текст в выходной буфер, но затем он также возвращает весь выходной буфер обратно в ваш вспомогательный метод, который затем выводится<%=, что приводит к дублированию всей вашей страницы.

Обычно вам вообще не нужно много использовать concat (я никогда не сталкивался с ситуацией, когда мне это нужно).В вашем помощнике вы можете просто сделать это:

def test
  "Hello world"
end

И затем использовать <%= test %> в вашем представлении.

5 голосов
/ 29 декабря 2015

Это так же, как это

<% execute this code and display nothing %> 

и

<%= execute this code and display the result in the view %> 
0 голосов
/ 27 мая 2015

Смотрите это:

<%= You need to do this %>
<% You shouldn't do this %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...