Rail 3 Custom Renderer: куда поместить этот код? - PullRequest
4 голосов
/ 16 февраля 2011

Я следую примеру Йехуды о том, как создать собственный рендерер для Rails 3, согласно этому посту: http://www.engineyard.com/blog/2010/render-options-in-rails-3/

Мой код работает, но мне трудно понять, где этот код должен жить. Прямо сейчас, мой код застрял прямо внутри моего файла контроллера. Делая это, все работает. Однако когда я перемещаю код в папку lib, я явно «требую» мой файл в контроллере, которому требуется средство визуализации, или он не будет работать. Да, файл загружается, когда он находится в папке lib, автоматически. но код для добавления средства визуализации по какой-то причине не работает, пока я не сделаю для него требование.

где я должен поместить свой код, чтобы добавить тип рендерера и mime, чтобы rails 3 поднял его и зарегистрировал для меня, без необходимости вручную запрашивать файл в моем контроллере?

Ответы [ 3 ]

1 голос
/ 16 февраля 2011

В книге Хосе Валима, Создание приложений Rails , это первая глава. Он создает PDF MIME-тип & рендерер, используя Prawn.

В своем примере он создал lib/pdf_renderer.rb с этим:

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

Поскольку lib больше не загружается автоматически, вам придется либо автоматически загрузить lib, либо указать, что этот файл вам нужен, если вы хотите его использовать.

Здесь может также подойти инициализатор.

1 голос
/ 16 февраля 2011

Я бы поместил его в инициализатор или в lib и потребовал бы его в контроллере приложения.

0 голосов
/ 16 февраля 2011

Я немного покопался в этом, основываясь на предложениях здесь.

Я обнаружил, что инициализатор "mime_types" уже находится в нашей базе кодая думаю, что это создано рельсами, по умолчанию.в нем было несколько закомментированных примеров.поэтому я добавил свой собственный тип MIME в этот файл.

Я также решил использовать инициализатор для пользовательского рендерера, чтобы он автоматически загружался и был доступен вместе с приложением.таким образом, мне не нужно включать его в разные места, где он мне нужен.я могу просто ответить на созданный мною формат и отправить данные.

спасибо за советы, все.

...