我有一个带有一个回形针附件的模型:图像
型号:
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
我的conttroller的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
答案 0 :(得分:5)
根据github issue,您可以执行以下操作:
image_uri = URI.join(request.url, @home_screen.image.url)
这将是URI
个对象,可以使用String
.to_s
答案 1 :(得分: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