ruby - Rails 3.1 Edge 是否破坏了 XmlMarkup::Builder?

标签 ruby ruby-on-rails-3.1

Web 上有许多示例(例如 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 作者所建议):

--- /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

关于ruby - Rails 3.1 Edge 是否破坏了 XmlMarkup::Builder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954198/

相关文章:

ruby - Facebook APP 多域

ruby-on-rails - 在 rails 中将列类型更改为更长的字符串

ruby - 从 Ruby 执行 Rspec

java - AES/CBC 在 Java 中加密,在 Ruby 中解密

ruby-on-rails - rails 将循环分成两个表。 rails View ,新手

ruby - Rails 3 模型记录器

java - 使用RJB(Ruby Java Bridge)的OpenNLP中的java.lang.NullPointerException

ruby-on-rails - 渲染部分布局不显示任何内容

search - Rails - 如何不评估 Ransack 搜索表单中的字段

autocomplete - rails rails3-jquery-autocomplete MissingAttributeError for display_value