需要在Rails中更改和缓存出站链接



v。轨道2.3.8

我希望实现的是在Rails中动态修改出站链接,以便使用片段缓存来缓存更改。你会怎么做?

注意:这一次我有意不在这里包含我自己的想法和源代码,因为我希望听到没有偏见的建议。

谢谢。

以下是解决方案:

在ActionController::Caching::Fragments.fragment_for中,更改以下行:

pos = buffer.length
block.call
write_fragment(name, buffer[pos..-1], options)

到此:

pos = buffer.length
fragment = Nokogiri::HTML::fragment(block.call)
fragment.css('a').each do |a|
  unless a['href'].nil?
    a.set_attribute('rel', 'nofollow') unless (a['href'].starts_with?('/') || a['href'].starts_with?("http://#{ENV['BASE_URL']}"))
  end
end
buffer[pos..-1] = fragment.to_html
write_fragment(name, buffer[pos..-1], options)

请注意:

  1. 我使用ENV['BASE_URL']来存储网站的基本URL(从初始化期间的数据库(
  2. 你必须安装了野宫宝石
  3. 这个解决方案适用于Rails 2.3.8——我还没有在版本3中进行过测试

相关内容

  • 没有找到相关文章

最新更新