Вызов rails_asset_id прямо в контроллере - PullRequest
0 голосов
/ 05 апреля 2011

Есть ли способ вызвать приватную функцию rails_asset_id (http://apidock.com/rails/v3.0.5/ActionView/Helpers/AssetTagHelper/rails_asset_id) для генерации ключа очистки кэша?

Мне нужны те же функции для файлов, которые я буду извлекать изajax-запрос (поэтому я не могу просто использовать встроенные функции * _include_tag), который я хочу кэшировать до тех пор, пока они не будут изменены. Есть ли способ вызвать rails_asset_id напрямую, чтобы мне не пришлось повторно реализовывать измененное времяпроверяет и кеширует это?

1 Ответ

0 голосов
/ 11 апреля 2011

Вы можете использовать send для вызова частных методов.Для правильной работы временной метки файла rails_asset_id требует, чтобы файл ресурса находился внутри assets_dir, который по умолчанию является каталогом /public.Вот пример:

# Get asset id for the file /public/json/example.json
send(:rails_asset_id, 'json/example.json')

Если вы используете его снаружи, это один из способов сделать это.

require 'action_view/helpers/asset_tag_helper'
include ActionView::Helpers::AssetTagHelper
send(:rails_asset_id, 'json/example.json')

Обратите внимание, что все эти методы являются хакерскими и не будутработать над будущими версиями Rails, поскольку они изменили способ организации помощников тега актива.Поэтому действуйте с осторожностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...