2011-02-16 73 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類型到這個文件。

我還決定使用自定義渲染器的初始化程序,以便它自動加載並可用於應用程序。這樣我不必記得把它包括在我需要的地方。我可以只響應我創建的格式,併發送數據。

感謝提示,大家。