Как остановить auto_link от экранирования угловых скобок? - PullRequest
2 голосов
/ 05 июля 2011

Я бы хотел, чтобы мое приложение позволяло пользователям публиковать ссылки в своих сообщениях, а также чтобы эти ссылки автоматически распознавались.Для этого я использовал auto_link как таковой: следующий фрагмент, который вызывается для отображения сообщения человека:

_post.html.erb:

 <tr>
     <td >
    <span class="post_header"><h4><%= link_to "#{post.user.first_name} #{post.user.last_name}", post.user %></h4></span>
    <p> <%= auto_link(post.content) %> </p>
    <span class="post_timestamp">
        Opined <%= time_ago_in_words(post.created_at) %> ago
    </span>
     </td>
 </tr>

, выводитниже, для одного post.content:

 <p> Wondering if this link &lt;a href=&quot;http://www.economist.com/blogs/freeexchange&quot;&gt;http://www.economist.com/blogs/freeexchange&lt;/a&gt; will become a proper link

Почему автоматическая ссылка создает / экранирует угловые скобки для

Ответы [ 3 ]

4 голосов
/ 05 июля 2011

В Rails 3 по умолчанию erb не позволяет выводу ruby ​​содержать html. Чтобы обойти это, вы можете использовать "some string".html_safe

<%= auto_link(post.content).html_safe %>

Но, конечно, любой html или javascript будет разрешен. Итак ...

<%= sanitize(auto_link(post.content).html_safe) %>
1 голос
/ 04 мая 2013

Обратите внимание, что auto_link был удален с Rails 3.1.

См. этот ответ для замены решения.

0 голосов
/ 06 января 2013

Решение tybro0103 работает, но если вам нужны ТОЛЬКО ссылки в качестве правильного HTML, вам понадобится

sanitize(auto_link(post.content).html_safe,tags:'a')
...