我正在关注Yehuda关于如何为Rails 3构建自定义渲染器的示例,根据这篇文章:http://www.engineyard.com/blog/2010/render-options-in-rails-3/
我的代码工作正常,但我很难搞清楚代码应该存在的位置。现在,我的代码卡在我的控制器文件中。这样做,一切正常。但是,当我将代码移动到lib文件夹时,我在需要渲染器的控制器中明确地“要求”我的文件,否则它将无法工作。是的,当文件自动位于lib文件夹中时,文件会被加载。但添加渲染器的代码由于某种原因不起作用,直到我对它进行了要求。
我应该在哪里添加我的代码来添加渲染器和mime类型,以便rails 3将它拾取并为我注册,而不必手动在控制器中请求该文件?
答案 0 :(得分:1)
我将它放在初始化程序中,或者在lib中,并在应用程序控制器中使用它。
答案 1 :(得分:1)
在Jose Valim的书Crafting Rails applications中,这是第一章。他创建了一个PDF mime类型&渲染器使用Prawn。
在他的例子中,他创建了lib/pdf_renderer.rb
:
require "action_controller"
Mime::Type.register "application/pdf", :pdf
由于lib
不再自动加载,您必须自动加载lib
或明确要求使用此文件。
初始化程序也可能适用于此。
答案 2 :(得分:0)
我根据这里的建议进行了更多的挖掘。
我发现“mime_types”初始化程序已经在我们的代码库中了。我认为这是由rails创建的,默认情况下。它有几个注释掉的例子。所以我将自定义mime类型添加到此文件中。
我还决定为自定义渲染器使用初始化程序,以便它自动加载并随应用程序一起提供。这样我就不必记得把它包含在我需要它的各个地方。我可以响应我创建的格式,然后发送数据。
感谢大家的提示。