轨道上的红宝石 - 直接在控制器中调用rails_asset_id



有没有办法调用私有函数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,因为它们已经改变了资产标签助手的组织方式。因此,请谨慎行事。

相关内容

  • 没有找到相关文章

最新更新