Rails3 и автоматические ссылки nofollow

#ruby #ruby-on-rails-3 #seo #hyperlink #nofollow

#ruby #ruby-on-rails-3 #seo #гиперссылка #nofollow

Вопрос:

у меня есть некоторая модель, пусть это будет Post с полем: content. Любой пользователь может отправить сообщение с помощью html (со ссылками, конечно :)) и я хотел бы установить nofollow для этих ссылок. Есть ли какой-либо плагин rails для автоматизации этой задачи? Есть ли у этого плагина возможность управлять «nofollowing» условным способом — например, администратор может добавлять ссылки без nofollow, а другие — только с nofollow?

Комментарии:

1. Я думаю, вам следует создать свои собственные вспомогательные методы

Ответ №1:

Это должно сделать то, что вы ищете:https://github.com/rgrove/sanitize

Установите плагин, затем для блока текста вы можете запустить:

 <%=raw Sanitize.clean(@your_html, Sanitize::Config::BASIC) %>
  

Существуют другие параметры, которые вы можете использовать для его настройки, но версия Config::BASIC обнаружит все ссылки в этом блоке текста и добавит к ним тег nofollow.

Ответ №2:

Вы можете определить помощник для этого, переопределив (или, скорее, обернув) ссылку по умолчанию на

В app / helpers / posts_helper.rb сделайте что-нибудь вроде:

 def nf_link_to(link_text, post)
  opts = {}
  opts[:rel] = "nofollow" unless post.author == "admin"
  return link_to text, post, opts
end
  

Так что, по вашему мнению, вы можете сделать:

 <%= nf_link_to post.title, post %>
  

Что должно привести к:

 <a href="/posts/12" rel="nofollow">My First[tm] Post</a>
  

Вам следует хорошенько взглянуть на фактическую реализацию link_to и сделать ваш «nf_link_to» настолько сложным (например, передача аргументов и, возможно, блока), насколько вы пожелаете.

Комментарии:

1. -1: проблема в том, что ссылка может быть включена в текстовый блок, отправленный пользователем, а не в том, как сгенерировать такую ссылку, что является тривиальным.