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、a hrefsが表示されます。

アイデアや提案はありますか?

宜しくお願いします。

4

1 に答える 1

0

ビューで RSS を処理および表示する方法は、私が行う方法ではありませんが、簡単な答えは、この方法で作成した HTML 文字列に対してhtml_safeを呼び出す必要があるということです。

受信 RSS データにはクロスサイト セキュリティの問題を引き起こすコードが含まれている可能性があるため、これは安全ではない可能性があります。これは、サニタイズヘルパーを使用して処理できます。サニタイズヘルパーが自動的に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 に答える