#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: проблема в том, что ссылка может быть включена в текстовый блок, отправленный пользователем, а не в том, как сгенерировать такую ссылку, что является тривиальным.