3

Rails では、静的ファイルを提供するときasset IDに、URL に追加されたを取得します。

<script src="/javascripts/application.js?1300371955" ...
<link href="/stylesheets/custom.css?1299690788" ...

このように、ファイルのタイムスタンプが変更され、ブラウザーが新しいファイルを自動的に要求すると、静的ファイルの URL が変更されます。

stylesheet_link_tag---と---静的アセットを含めるためのヘルパー メソッドを使用するjavascript_include_tagと、image_tagRails はこれらのファイルへのすべての参照にタイムスタンプを自動的に追加することがわかりました。

ファイルなどのヘルパーメソッド
持たない他のアセットに同様のものを実装するにはどうすればよいですか?.swf

(再ダウンロードを強制するこの「戦略」には名前がありますか? もしそうなら、それは何と呼ばれますか? )

4

2 に答える 2

4

タイムスタンプをアセットに追加する Rails メソッドは rails_asset_id と呼ばれ、ActionView::Helpers::AssetTagHelper で定義されています。これはプライベート メソッドですが、ヘルパーでアクセスして、次のようにカスタム タグ用に生成することができます。

def swf_param_tag(path)
  asset_id = rails_asset_id(path)
  "<param name='movie' value='#{path}?#{asset_id}'/>"
end

File.mtime(path).to_i.to_s を呼び出して最終変更時刻を取得するため、パスを渡す必要があります。

ここでアセットタグが何を購入するかについての詳細な説明があります: http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html

于 2011-03-18T20:59:00.683 に答える
0

@Unixmonkey:ソリューションは非常にうまく機能します。

別の方法として、 swf_fuプラグインもあります。

Adobe Flash swfファイルを他のアセット(画像、JavaScriptなど)と同じように扱い、SWFObject2.2を使用して埋め込みます

アセットのタグ付けが組み込まれています。

于 2011-03-21T20:38:48.723 に答える