在ROR中產生RSS

其實很簡單,請參考 HowtoGenerateARSSFeed 這篇。我是用第一種用法,看起來大致上就夠了。不過有幾點要注意一下。

1. @headers[“Content-Type"] = “application/xml" 要改成 headers[“Content-Type"] = “application/xml"

2. 如果有中文字都會被escaped掉。

例如標題是:測試,直接打開xml來看就會變成:escaped.png

瀏覽器打開來看是正常啦,可是我個人不是很喜歡這樣…,所以有幾種可行的方式可以處理。

1)第一種就是封在CDATA! ex:

xml.title{ xml.cdata!(“測試") }

那生出來的內容就不會幫你做處理(阿就都包在[[CDATA! 裡了阿)。

2)第二種就是使用 << 運算子 讓ror 內帶的rexml Builder知道要掠過這段處理。 ex:

xml.title do
xml.<<“測試"
end

這樣就可以了,不知道還有沒有更好的方法@@,原本xml builer 裡面是寫可以建立的時候給定 escape_attrs 這個參數。不過嘛…裡面也說這個參數不建議使用了。 其實這兩個方法應該可以一起使用,一般來說(RSS2.0),title的值都是已經濾掉html tag 的東東,所以就可以使用第二種方法。

description中的話,也可以自己濾掉後用CDATA封起來。但是在<content:encoded>中濾掉html tag 的話就不是很好了阿….,所以就可以使用第一種方法來維持原有的樣式。

對「在ROR中產生RSS」的一則回應

  1. I talked about these very points to my mentor last week and she could not offer a rebuttal. I certainly enjoyed every single bit reading this. About how much time have you been an expert in this field? Ever make it out to New York? At least, that’s what we are commonly told all the time.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s