Rails встраивает сомнительный синтаксис - PullRequest
0 голосов
/ 31 августа 2010

Я работал ROR сейчас .. Я очень новичок в ROR ..

Может кто-нибудь сказать мне, в чем разница между <% =%> и <% = h%>

почему у нас здесь ч ??

в некоторых случаях я видел t вместо h ..

Пожалуйста, уточните мне

Ответы [ 3 ]

2 голосов
/ 31 августа 2010

Все между <%= и %> оценивается как код Ruby, и результирующая строка вставляется в документ (это фактически ERb, и его можно использовать для произвольных документов, а не только для HTML).И в этом случае он вызывает метод с именем simple h, который экранирует свой аргумент.Поэтому я думаю, что то, что вы видите, скорее всего будет что-то вроде <%=h @somevar%>.Таким образом, содержимое @somevar экранируется методом h, и вместо этого целого выражения вставляется возвращаемая строка.

Другие существующие синтаксисы ERb <% ... %> для оценки кода Rubyно без вставки результата в документ, а также есть <% ... -%> и <%= ... -%> для подавления последующего перехода на новую строку, что позволяет избежать пробелов в отображаемом документе.

2 голосов
/ 31 августа 2010

Синтаксис <%=h %> экранирует символы, которые в противном случае могли бы испортить вашу страницу (например, '&').На самом деле это вспомогательный метод с именем 'h'.Итак:

<%=h "Ann & Bill" %> 

расширится до Ann &amp; Bill, тогда как

<%= "Ann & Bill" %>

расширится до Ann & Bill, что может быть не тем, что вам нужно в вашем HTML.

1 голос
/ 31 августа 2010

Теперь, когда Rails 3 выпущен, имейте в виду, что с этого момента стандартное поведение заключается в автоматическом экранировании всего, что находится внутри тегов <% =%>.Таким образом, защита XSS (межсайтовый скриптинг) всегда включена, что делает использование <% = h%> избыточным.Это может вас укусить, если / когда вы обновляете свои приложения с Rails 2.

This Railscast (http://railscasts.com/episodes/204-xss-protection-in-rails-3) дает хороший пример для вышеупомянутого.

Если вы хотите, чтобы это поведениев приложениях Rails 2.3 вы можете использовать http://github.com/rails/rails_xss (для 2.3.8) или http://github.com/NZKoz/rails_xss (для 2.3.5)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...