私はRails 3.1を使用しています。これを理解しようとしています。驚いたことに、Railsには付属していませんこの方法はまったく問題です。
画像への完全な絶対URLを取得する方法を誰かに示すことはできますか?
アプリ内で使用する相対パスを提供するasset_path(image.png)
を使用します。私はroot_url + asset_path(image.png)
を試してみましたが、それだけでhttp://localhost:3000//assets/image.png
ダブルスラッシュ付き
誰かがこれを行う効率的な方法がありますか?
ドキュメント のアセットホストの使用セクションをご覧ください。 asset_Host
を指定する必要があります。リクエストチェーンから動的に構築することもできます"#{request.protocol}#{request.Host_with_port}"
これをapplication_helper.rb
def asset_url asset
"#{request.protocol}#{request.Host_with_port}#{asset_path(asset)}"
end
次に、asset_url
あなたの意見で。
Rails 4、そしておそらくそれ以前には、以下を使用します:
config.action_mailer.asset_Host = 'https://assets.com'
私のconfig/environments/*.rb
すでに各環境に合わせて調整しています:
config.domain = 'mysite.dev'
だから、追加するのは簡単なことでした
config.action_controller.asset_Host = "http://" + config.domain
各ファイルに。次にasset_path
は、あたかも奇跡的に動作しますasset_url
。
フォルダー構造の例。
app/
assets/
flags/
32x32/
en.png
256x256/
en.png
絶対フラグイメージパスを生成する場合は、ApplicationHelperに2つのメソッドを追加できます。
module ApplicationHelper
# Generate flag path by locale
# - locale. Can be "en", "it", etc.
# - flag_size. Will be used to set folder size. Folder size can be "32x32", "256x256".
# Return flag image path. Path will absolute
def generate_flag_path_by_locale(locale, folder_size = "32")
folder = "#{flag_size}x#{flag_size}"
domain_absolute_path = generate_domain_absolute_path
flag_path = ("#{domain_absolute_path}/assets/flags/#{folder}/#{locale}.png")
return flag_path
end
# Generate domain absolute path
def generate_domain_absolute_path
request_protocol = request.protocol
request_Host_with_port = request.Host_with_port
domain_absolute_path = request_protocol + request_Host_with_port
return domain_absolute_path
end
end
私たちのapps/view/products.html.erbに。私たちは電話する必要があります:
<% flag_path = generate_flag_path_by_locale("en") %>
最終結果: