Что означает "h" в ""?
когда я создаю каркас по умолчанию, отображение тегов на шоу.формат html.Эрб есть
<%=h @broker.name %>
Я знаю разницу между <% и <%=.  Что такое " Н " делать?
6 ответов:
html escape. Это метод, который преобразует такие вещи, как в ссылки на числовые символы, чтобы рендеринг не нарушал ваш html.
<%=hна самом деле 2 вещи. Вы открываете тег erb (<%=) и вызов метода Railshчтобы избежать всех символов.эти два вызова эквивалентны:
<%=h person.first_name %> <%= h(person.first_name) %>The
hметод обычно используется для экранирования HTML и Javascript из форм пользовательского ввода.
h- это псевдоним методhtml_escapeС ERB:: Util класса.
существует также метод в стойке, чтобы избежать HTML
Rack::Utils.escape_htmlв случае, если вы находитесь в металле и хотите избежать некоторых HTML.
путь поздно на вечеринку, но я добавляю дополнительное объяснение тому, что
html_escapeделает, чтобы, надеюсь, помочь другим нубам, как я, понять, что происходит. Рельсы 3 и позже автоматически экранируют все выходные данные теперь, и поэтому гораздо меньше ситуаций, когдаhtml_escapeакаh()потребуется. Наиболее заметным из которых является, когда вы собираетесь использоватьhtml_safeметод при построении ссылок с html в классе презентатора и т. д. Например:#some_view.html.erb <span><%= @user.name %></span> #This is 100% fine and will be automatically escaped by Rails 3+ #Output => <span>Brian Kunzig</span> #Now say we want a link with html that we need preserved! OMG WHAT ARE DO?? <%=link_to "<span><i class='fa fa-user'></i>#{@user.name}</span>".html_safe #DANGER!!!ссылка выше может вызвать серьезные проблемы и открыть вам до всех видов XSS (межсайтовых сценариев) атак. Самый простой пример, если пользователь сохранил свое имя как
"<script>alert('omg');</script>"а ты использовалhtml_safeна нем это приведет к тому, что любая страница, отображающая их предполагаемое имя, получит предупреждение с надписью "omg"! Это серьезная проблема. Чтобы этого избежать сделайте:<%=link_to "<span><i class='fa fa-user'></i>#{h(@user.name)}</span>".html_safe #Winning!экранируя потенциально испорченные данные, предоставленные пользователем, мы свободны от дома!
h - это просто псевдоним для html_escape. Это метод утилиты, обычно используемый для экранирования html и javascript из форм пользовательского ввода. Он преобразует специальные символы в ссылки на числовые символы, чтобы рендеринг не нарушал ваш html.
С<%= h "<p>Hello World</p>" %>выводит
<p>Hello World</p>как текст для просмотра, абзац не будет применяться. он будет закодирован как
<p>Hello World</p>.