0

我在视图内部调用我的提要,<%= blog_feed %>并在我的助手中有一个小片段。

require 'rss/1.0'
require 'rss/2.0'
require 'open-uri'

def blog_feed
    source = "http://www.domain.com/.rss" # url or local file
    content = "" # raw content of rss feed will be loaded here
    open(source) do |s| content = s.read end
    rss = RSS::Parser.parse(content, false)

    html = "<ul>"
    rss.items.first(3).each do |i|
    html << "<li><a href='#{i.link}'>#{i.title}</a></li>"
    end
    html << "</ul>"
    html


  end

它主要按照我想要的方式运行。但是html是内联html。所以我在网站上看到了 li,ul 和 hrefs。

有什么想法或建议吗?

最好的问候否认

4

1 回答 1

0

您在视图中处理和显示 RSS 的方式与我不同,但快速的回答是您需要为以这种方式构建的任何 HTML 字符串调用html_safe 。

这可能是不安全的,因为传入的 RSS 数据中可能包含导致跨站点安全问题的代码。您可以使用sanitize助手来处理它。我认为sanitize助手会自动为您调用html_safe

因此,在您的blog_feed方法结束时,将html返回值替换为:

  sanitize html

在此处查看有关清理的文档:http : //api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize

于 2013-06-22T03:15:03.500 回答