有没有办法调用私有函数rails_asset_id(http://apidock.com/rails/v3.0.5/ActionView/Helpers/AssetTagHelper/rails_asset_id(来生成缓存破坏密钥?
我需要与我将从 ajax 请求下拉的文件相同的功能(所以我不能只使用内置的 *_include_tag 函数(,我希望在修改它们之前进行缓存。有没有办法直接调用rails_asset_id,这样我就不必重新实现修改后的时间检查并缓存它?
您可以使用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,因为它们已经改变了资产标签助手的组织方式。因此,请谨慎行事。