1

s3 を指すことを除いて、image_tag とまったく同じように機能する新しいアセット タグ ヘルパーを作成する最良の方法は何でしょうか?

だから私はこれが起こることを望みます:

image_path "foo.jpg" # => "/assets/foo.jpg" (default behavior)
s3_image_path "bar.jpg" # => "http://site.s3.amazon.com/assets/bar.jpg"

これを行う最善の方法は、application_helper.rb で新しいヘルパーを作成することでしょうか?

4

2 に答える 2

3

次のように、デフォルトのアセット ヘルパーを模倣した新しいヘルパーを application_helper.rb に記述しました。

def s3_image_path(filename)
  "http://site.s3.amazonaws.com/assets/#{filename}"
end

def s3_image_tag(filename, options={})
  image_tag(s3_image_path(filename), options)
end

s3_image_tag("image.jpg")を指しますhttp://site.s3.amazonaws.com/assets/image.jpg

于 2012-06-07T17:56:53.970 に答える
0

site.s3.. が Rails アプリケーションになく、asset_pipeline を使用していない場合は、画像の src で直接 URL を参照してください。

s3 がアプリケーション サイトである場合、使用されるコンテキストで新しいヘルパーを作成するだけです。

またはhttp://site.s3.amazon.com/assets/bar.jpgの何かは次のようになります

<img src="<%=@root_url%>/assets/bar.jpg" />

では、なぜもう一方は違うのでしょうか。というか、なんで2つ持ってるの?

編集:

私がすることは、アプリケーション ヘルパーでホストされたサイトへの URL を保持する文字列を持つことです。次に、画像を返すヘルパー メソッド tag("img", :src => "#{s3_image_link}/bar.jpg")

于 2012-06-06T18:37:26.457 に答える