2012-01-16 11 views
1

私はモバイルアプリ用のAPIを作成しようとしており、CarrierwaveとMongoidを使用しています。すべての画像をアップロードして取得すると正常に動作しますが、jsonレスポンスを生成すると画像URLはhttp://localhost:3000/path/to/image.pngの代わりにpath/to/image.pngを表示します。キャリアウェーブ+モンゴイドフルURL(jsonレスポンス)

イメージに完全なURLを生成させるにはどうすればよいですか。私はGoogleで広範な検索を行っているが、固いソリューションを見つけることができません。

ご協力いただきありがとうございます。

答えて

1

私はあなたがアップローダー(すべてのモデル)からレールsession/request情報にアクセスすることができないので、あなたが必要とするあなたは、デフォルトでcarrierwaveでこれを行うことができると思いますが、あなたはこのモンキーパッチ

module CarrierWave::Uploader::Url 
    def url 
    if $request 
     if file.respond_to?(:url) and not file.url.blank? 
     $request.protocol + $request.host_with_port + file.url 
     elsif current_path 
     $request.protocol + $request.host_with_port + (base_path || "") + File.expand_path(current_path).gsub(File.expand_path(root), '') 
     end 
    else 
     raise ArgumentError, "Request object is empty" 
    end 

    end 

end 

によってこの問題を回避することができますいけません要求データをロードするためにapplication_controllerbefore_filterを定義するための

before_filter :load_request 

    def load_request 
    $request = request 
    end 

私は、ローカルストレージ/ mongoidにこのパッチをテストしています。私は、これは、応答のための

+0

感謝を助け

希望。これは、Amazon S3の/霧の中で動作する方法を知ってはいけません。猿パッチがアップローダファイルに入っているはずですか?また、イメージ用のローカルストレージも使用しています(Grid FS)。 – ags9

+0

あなたはcarrierwaveイニシャライザに置くことができます、それはトリックを行います..私はそれもローカルストレージのためには良いと思うが、あなたが確認することができます:) – RameshVel