直接在控制器中调用rails_asset_id

时间:2011-04-05 18:12:12

标签: ruby-on-rails ruby-on-rails-3

有没有办法调用私有函数rails_asset_id(http://apidock.com/rails/v3.0.5/ActionView/Helpers/AssetTagHelper/rails_asset_id)来生成缓存破坏密钥?

我需要为ajax请求提取的文件具有相同的功能(所以我不能只使用内置的* _include_tag函数),我希望在修改之前对其进行缓存。有没有办法直接调用rails_asset_id,这样我就不必重新实现修改后的时间检查和缓存了呢?

1 个答案:

答案 0 :(得分:0)

您可以使用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')

请注意,所有这些技术都是hackish,并且无法在未来版本的Rails上运行,因为它们已经改变了资产标记帮助程序的组织方式。所以请谨慎行事。