4

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

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

我应该把我的代码放在哪里来添加渲染器和 mime 类型,以便 rails 3 会为我选择并注册它,而无需我手动要求控制器中的文件?

4

3 回答 3

1

我会把它放在初始化程序中,或者放在 lib 中,并在应用程序控制器中需要它。

于 2011-02-16T15:42:08.780 回答
1

在 Jose Valim 的著作Crafting Rails applications中,这是第一章。他使用 Prawn 创建了一个 PDF mime 类型和渲染器。

在他的示例中,他创建lib/pdf_renderer.rb了以下内容:

require "action_controller" 
Mime::Type.register "application/pdf", :pdf

由于lib不再自动加载,您要么必须自动加载,要么lib在您想要使用它的地方特别需要此文件。

初始化器在这里也可能是合适的。

于 2011-02-16T15:55:02.730 回答
0

根据此处的建议,我对此进行了更多挖掘。

i found a "mime_types" initializer was already in our code base. i think this is created by rails, by default. it had several commented out examples in it. so i added my custom mime type to this file.

i also decided to use an initializer for the custom renderer so that it's automatically loaded and available with the app. this way i don't have to remember to include it in the various places i need it. i can just respond_to the format i created, and send the data down.

thanks for the tips, everyone.

于 2011-02-16T19:04:34.800 回答