Rail 3自定义渲染器:这个代码放在哪里?

时间:2011-02-16 15:22:06

标签: ruby-on-rails ruby ruby-on-rails-3 formatter renderer

我正在关注Yehuda关于如何为Rails 3构建自定义渲染器的示例,根据这篇文章:http://www.engineyard.com/blog/2010/render-options-in-rails-3/

我的代码工作正常,但我很难搞清楚代码应该存在的位置。现在,我的代码卡在我的控制器文件中。这样做,一切正常。但是,当我将代码移动到lib文件夹时,我在需要渲染器的控制器中明确地“要求”我的文件,否则它将无法工作。是的,当文件自动位于lib文件夹中时,文件会被加载。但添加渲染器的代码由于某种原因不起作用,直到我对它进行了要求。

我应该在哪里添加我的代码来添加渲染器和mime类型,以便rails 3将它拾取并为我注册,而不必手动在控制器中请求该文件?

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类型添加到此文件中。

我还决定为自定义渲染器使用初始化程序,以便它自动加载并随应用程序一起提供。这样我就不必记得把它包含在我需要它的各个地方。我可以响应我创建的格式,然后发送数据。

感谢大家的提示。