2011-04-05 4 views
0

개인용 함수 rails_asset_id (http://apidock.com/rails/v3.0.5/ActionView/Helpers/AssetTagHelper/rails_asset_id)를 호출하여 캐시 무효화 키를 생성 할 수 있습니까?컨트롤러에서 rails_asset_id를 직접 호출

내가 수정 될 때까지 캐싱되기를 원하는 AJAX 요청 (내가 내장 된 * _include_tag 함수를 사용할 수 없기 때문에)에서 동일한 기능을 사용해야한다. rails_asset_id를 직접 호출하여 수정 된 시간 검사를 다시 구현할 필요가 없으며 캐싱하는 방법이 있습니까?

답변

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') 

외부에서 사용하는 경우이 방법을 사용하는 것이 좋습니다. 이러한 기술의 모든 hackish이며 그들이 자산 태그 헬퍼가 구성되는 방식을 변경 한 이후 레일의 향후 버전에서 작동하지 않습니다

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

참고. 그러니 신중하게 진행하십시오.

+0

보기 외부에서 이것을 사용할 수 있습니까? 사실 lib 클래스에 필요한 기능을 가져 왔고 거기에이 메서드를 사용할 때 분명히 정의되지 않은 메서드 오류가 발생합니다. – Paul

+0

@ShyGuy :보기 외부에서 사용하여 답변을 업데이트했습니다. – htanata

관련 문제