2011-02-16 71 views
4

我与Yehuda的关于如何建立为Rails 3定制呈现例如下面一起,根据这个帖子:http://www.engineyard.com/blog/2010/render-options-in-rails-3/铁路3自定义渲染器:哪里放这个代码?

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

我应该在哪里添加我的代码来添加渲染器和MIME类型,以便rails 3能够接收它并为我注册,而不必手动在我的控制器中手动要求该文件?

+1

供参考:http://stackoverflow.com/questions/4794384/where-should-libraries-go-in-rails-3 – 2011-02-16 15:29:38

回答

1

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

1

在Jose Valim的书中,Crafting Rails applications,这是第一章。他用Prawn创建一个PDF MIME类型&渲染器。

在他的榜样,他创造了lib/pdf_renderer.rb本:

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

由于lib不再自动加载,你要么有自动加载lib或明确要求这个文件要使用它。

初始化器在这里也可能适用。

0

我根据这里的建议做了一些更深入的研究。

我发现“mime_types”初始化程序已经在我们的代码库中。我认为这是由rails创建的,默认情况下。它有几个注释掉的例子。所以我添加了我的自定义MIME类型到这个文件。

我还决定使用自定义渲染器的初始化程序,以便它自动加载并可用于应用程序。这样我不必记得把它包括在我需要的地方。我可以只响应我创建的格式,并发送数据。

感谢提示,大家。