网上有很多例子(例如http://techoctave.com/c7/posts/32-create-an-rss-feed-in-rails http://techoctave.com/c7/posts/32-create-an-rss-feed-in-rails)展示如何使用 Builder 制作漂亮的 RSS 提要。规范模板是这样的:
xml.instruct! :xml, :version => "1.0"
xml.rss :version => "2.0" do
xml.channel do
xml.title "Your Blog Title"
xml.description "A blog about software and chocolate"
xml.link posts_url
for post in @posts
xml.item do
xml.title post.title
xml.description post.content
xml.pubDate post.posted_at.to_s(:rfc822)
xml.link post_url(post)
xml.guid post_url(post)
end
end
end
这在 Rails 3.0.7 中工作得很好。在 Rails 3.1 Edge 中,每个命令似乎都会产生...
Rendered home/index.rss.builder (25.2ms)
Completed 500 Internal Server Error in 875ms
ActionView::Template::Error (wrong number of arguments (1 for 0)):
1: xml.instruct!(:xml, :encoding => "UTF-8")
2:
3: xml.rss :version => "2.0" do
4: xml.channel do
app/views/home/index.rss.builder:1:in `_app_views_home_index_rss_builder___2123990471_2215695900'
app/controllers/home_controller.rb:17:in `index'
app/controllers/home_controller.rb:11:in `index'
Rails 3.1.0.rc1 也因这个错误而对我造成了影响,但只有在使用 Ruby 1.8.7 时 - 事实证明这是一个问题.instruct!
作为临时解决方案,您可以使用以下内容对 xchar.rb 进行 Monkeypatch(按照本文作者的建议)http://lists.alioth.debian.org/pipermail/pkg-ruby-extras-maintainers/2010-June/005411.html http://lists.alioth.debian.org/pipermail/pkg-ruby-extras-maintainers/2010-June/005411.html):
--- /home/prahal/xmlbase.rb.orig 2010-06-03 11:18:38.000000000 +0200
+++ /home/prahal/xmlbase.rb.new 2010-06-03 11:18:53.000000000 +0200
@@ -131,7 +131,11 @@
end
else
def _escape(text)
- text.to_xs((@encoding != 'utf-8' or $KCODE != 'UTF8'))
+ begin
+ text.to_xs((@encoding != 'utf-8' or $KCODE != 'UTF8'))
+ rescue
+ text.to_xs()
+ end
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)