2

クリップが 1 つ付いたモデルがあります:image

モデル:

class HomeScreen < ActiveRecord::Base
  before_create { !HomeScreen.has_record? }
  validates :image, :attachment_presence => true
  attr_accessible :image
  has_attached_file :image

  def self.has_record?
    if HomeScreen.last
      true
    else
      false
    end
  end
end

コントローラーの show メソッドは相対パスで画像を返す必要がありますが、json はドメインで絶対 URL を返す必要があります。

コントローラ:

class HomeScreenController < ApplicationController
  # GET /home_screen
  def show    
    @home_screen = HomeScreen.last

    respond_to do |format|
      format.html
      format.json { render json: @home_screen }
    end
  end
4

2 に答える 2

5

github issueによると、次のことができます。

image_uri = URI.join(request.url, @home_screen.image.url)

これはURIオブジェクトになりString、その.to_s

于 2013-03-19T11:41:02.770 に答える
1

同じ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:09:50.280 に答える