25

Paperclip 添付ファイルの絶対 URI を取得することは可能ですか? 現在の問題は、実稼働環境がサブ URI (Passenger: RackBaseURI) にデプロイされている<paperclip attachment>.urlが、Rails-app の相対 URI ( /system/images/...) を返すことです。Paperclip 添付ファイルの絶対 URI を取得する方法はありますか?

Paperclip v2.7 と Rails 3.2.8 を使用しています。

4

7 に答える 7

28

試す

URI.join(request.url, @model.attachment_name.url)

また

URI(request.url) + @model.attachment_name.url

S3や絶対URLを使えば安全です。

更新: この回答は私のものよりも優れています;) https://stackoverflow.com/a/21027839/683157

于 2013-01-21T19:24:47.267 に答える
20

このgithub issueによると、使用する方がクリーンであるActionController::Base.asset_hostため、ヘルパーが生成されます。

  def add_host_prefix(url)
    URI.join(ActionController::Base.asset_host, url)
  end

これは、すべて/config/environments/<environment>.rbのファイルに次のものが含まれていることを前提としています。

Appname::Application.configure do

  # ....

  config.action_controller.asset_host = 'http://localhost:3000' # Locally

  # ....

end
于 2014-01-09T18:05:54.310 に答える
6

これを行う最も広く適用可能な方法は、最初に関連する構成/環境ファイルでアセット ホストを定義することです。

config.action_controller.asset_host = "http://assethost.com"
config.action_mailer.asset_host = "http://assethost.com"

次に、ビューとメーラーで:

asset_url(model.attachment.url(:style))

コンソールで:

helper.asset_url(model.attachment.url(:style))

モデルでは:

ApplicationController.helpers.asset_url(model.attachment.url(:style))
于 2014-12-03T21:00:26.597 に答える
5

あなたはこれを行うことができます:

<%= image_tag "#{request.protocol}#{request.host_with_port}#{@model.attachment_name.url(:attachment_style)}" %>

または、ヘルパーメソッドを作成してラップします。

def absolute_attachment_url(attachment_name, attachment_style = :original)
  "#{request.protocol}#{request.host_with_port}#{attachment_name.url(attachment_style)}"
end

そして、次のように使用します。

<%= image_tag absolute_attachment_url(attachment_name, :attachment_style)}" %>

例:モデル=人物(@person)、attachment_name =アバター、スタイル=:thumb

<%= image_tag absolute_attachment_url(@person.avatar, :thumb)}" %>
于 2012-09-23T21:19:33.007 に答える