我正在处理JSON数据,我想显示带有本地主机名的完整图像URL 但我得到了一半的item_image_url。.
“ item_image_url”:“ /system/images/item_images/000/000/001/original/images_%284%29.jpeg?1545807832”
f=partial(fall,x=dfxn)
print(f(df))
我怎么能得到这样的完整ulr http://localhost:3000/system/images/item_images/000/000/001/original/images_%284%29.jpeg?1545807832
在控制器中
{
"id": 1,
"title": "Pasta",
"filename": "Burger.",
"item_image_file_name": "images_(4).jpeg",
"item_image_content_type": "image/jpeg",
"item_image_file_size": 12944,
"item_image_updated_at": "2018-12-26T07:03:52.284Z",
"updated_at": "2018-12-26T07:03:52.355Z",
"created_at": "2018-12-26T07:03:52.355Z",
"item_image_url": "/system/images/item_images/000/000/001/original/images_%284%29.jpeg?1545807832"
}
在模型中
class V1::ImagesController < ApplicationController
skip_before_action :verify_authenticity_token
def index
@images = Image.all
render :json => @images.to_json(:methods => [:item_image_url])
end
def show
image = Image.find(params[:id])
render json: {status: 'success', data:image},status: :ok
end
def create
image = Image.new(image_params)
if image.save
render json: {status: 'success', data:image},status: :ok
else
render json: {status: 'error', message:'image not saved', data:image.errors},status: :unprocessable_entity
end
end
def destroy
image = Image.find(params[:id])
image.destory
render json: {status: 'success', data:image},status: :ok
end
private def image_params
params.permit(:item_image_url,:title,:filename)
end
end
请帮助。
答案 0 :(得分:0)
根据此github issue,使用ActionController :: Base.asset_host会更干净,这样会产生帮助器:
def add_host_prefix(url)
URI.join(ActionController::Base.asset_host, url)
end
这假设您在每个/ config / environments / 环境 .rb文件中具有以下内容:
Appname::Application.configure do
# ....
config.action_controller.asset_host = 'http://localhost:3000' # Locally
# ....
end
希望有帮助
答案 1 :(得分:0)
在APP_URL
中将常量config/development.rb
定义为
APP_URL = 'http://localhost:3000'
对于test.rb
和production.rb
,您必须根据域环境设置进行设置。
并将其保存为
def item_image_abs_url
"#{APP_URL}#{item_image.url(:original)}"
end
检查您在Rails控制台中获得的以下URL,
image = Image.first
image.item_image.url
答案 2 :(得分:0)
根据帖子中提到的描述,似乎您尚未在特定环境文件中指定资产宿主。
上述答案中定义的适当方法也是在相关的config / environments / {environment}文件中定义资产宿主: 上一行中提到的环境表示development.rb,production.rb和test.rb(如果您已定义了自定义环境,则也是如此)
onfig.action_controller.asset_host = "http://localhost:3000"
如果要在视图中访问它,请使用下面提到的代码:
asset_url(model.attachment.url(:style))
如果要访问它,请使用下面提到的代码
helper.asset_url(model.attachment.url(:style))
如果要在模型中使用它,请使用下面提到的代码:
ApplicationController.helpers.asset_url(model.attachment.url(:style))
希望有帮助!