2015-07-16 4 views
1

У меня возникли проблемы с переменными внутри link_to тегов, которые работают только при завершении в raw.Ruby on rails raw tag внутри link_to

Что делает raw на самом деле означает? Является ли хорошей практикой использовать его для переноса строк и переменных внутри тега?

+1

Вы У меня есть два вопроса, один из которых является общим и googleable, и o это просто общий и основанный на мнениях. Я думаю, вам будет лучше объяснить конкретную проблему, с которой вы сталкиваетесь, которая может быть решена без использования 'raw'. –

ответ

1

Из официальных Rails raw документации:

Этот метод выводит без спасаясь строку. Поскольку эскиз тегов теперь используется по умолчанию, это можно использовать, когда вы не хотите, чтобы Rails автоматически удалял теги. Это не рекомендуется, если данные поступают с входа пользователя.

Не рекомендуется использовать raw, поскольку он обходит стандартную дезинфекцию Rails. Используйте его, только если вы знаете, что делаете.

Если вам нужно использовать необработанный HTML-код внутри ссылки, вы также можете передать его в виде блока.

<%= link_to root_url do %> 
    <span>My link</span> 
<% end %> 

Другой альтернативой является использование помощников Rails, который санирует вход.

<%= link_to content_tag(:span, "Unsafe input"), root_url %> 
+0

Пожалуйста, объясните, что такое санитария в вашем ответе :-) – onebree

0

Почему у вас были проблемы, link_to помощник принимает блок в качестве аргумента, вы можете вставить любое содержимое внутри link_to помощника

Например:

<%= link_to 'link' do %> 
    <p> First paragraph </p> 
    <%= 'ruby string' %> 
<% end %> 

будет производить

<a href='/link'> 
    <p> First paragraph </p> 
    ruby string 
</a> 
Смежные вопросы