是否可以使用 URL 在另一个应用程序中显示来自 rails 活动存储的图像?
Is it possible to display images from rails active storage inside another application using a URL?
我正在尝试使用活动存储从 rails API/backend 访问用户头像对象,并使用 <img>
标签将其显示在电子桌面应用程序中。我一直在图像标签的 src 属性中尝试 URL 格式的各种组合,但总是 运行 进入 rails 路由错误。
我试过使用 key
和 rails 中的 attached_sgid
字段以及下面的 URL 格式,但两种方法都不起作用。
http://localhost:3000/rails/active_storage/blobs/--active_storage_blobs.key--
http://localhost:3000/rails/active_storage/blobs/--attached_sgid--
Gives this error:
No route matches [GET] "/rails/active_storage/blobs/BAh7CEkiCGdpZAY6BkVUSSIqZ2lkOi8vanVtcHN0YXJ0LWFwcC9Vc2VyLzE_ZXhwaXJlc19pbgY7AFRJIgxwdXJwb3NlBjsAVEkiD2F0dGFjaGFibGUGOwBUSSIPZXhwaXJlc19hdAY7AFQw--2465471c08be19196738d37c7f02be10c4a88bba"
甚至可以用这种方式显示活动存储中的图像吗?
我相信你应该 return url 准备好从你的后端使用 API 而不是在你的电子应用程序上构建 URL。
您可以使用以下方法从您的模型中找到正确的 url:
url_for(user.avatar)
有一些选项可以 return 它。如果你不介意让你的模型有点脏,你可以创建一个名为 avatar_url
的方法,然后 return 这个值与你的 json.
# new method on model
def avatar_url
Rails.application.routes.url_helpers.url_for(avatar)
end
# on controller controller
def show
user = User.find(params[:id])
render json: user, methods: [:avatar_url]
end
更简洁的选择是创建一个 jbuilder 来为您构建 json,然后在其中添加 url:
# create new jbuilder file app/view/users/show.json.jbuilder
json.id @user.id
json.avatar_url url_for(@user.avatar) if post.avatar.attached?
# on controller controller
def show
@user = User.find(params[:id])
respond_to do |format|
format.json
end
end
我正在尝试使用活动存储从 rails API/backend 访问用户头像对象,并使用 <img>
标签将其显示在电子桌面应用程序中。我一直在图像标签的 src 属性中尝试 URL 格式的各种组合,但总是 运行 进入 rails 路由错误。
我试过使用 key
和 rails 中的 attached_sgid
字段以及下面的 URL 格式,但两种方法都不起作用。
http://localhost:3000/rails/active_storage/blobs/--active_storage_blobs.key--
http://localhost:3000/rails/active_storage/blobs/--attached_sgid--
Gives this error:
No route matches [GET] "/rails/active_storage/blobs/BAh7CEkiCGdpZAY6BkVUSSIqZ2lkOi8vanVtcHN0YXJ0LWFwcC9Vc2VyLzE_ZXhwaXJlc19pbgY7AFRJIgxwdXJwb3NlBjsAVEkiD2F0dGFjaGFibGUGOwBUSSIPZXhwaXJlc19hdAY7AFQw--2465471c08be19196738d37c7f02be10c4a88bba"
甚至可以用这种方式显示活动存储中的图像吗?
我相信你应该 return url 准备好从你的后端使用 API 而不是在你的电子应用程序上构建 URL。
您可以使用以下方法从您的模型中找到正确的 url:
url_for(user.avatar)
有一些选项可以 return 它。如果你不介意让你的模型有点脏,你可以创建一个名为 avatar_url
的方法,然后 return 这个值与你的 json.
# new method on model
def avatar_url
Rails.application.routes.url_helpers.url_for(avatar)
end
# on controller controller
def show
user = User.find(params[:id])
render json: user, methods: [:avatar_url]
end
更简洁的选择是创建一个 jbuilder 来为您构建 json,然后在其中添加 url:
# create new jbuilder file app/view/users/show.json.jbuilder
json.id @user.id
json.avatar_url url_for(@user.avatar) if post.avatar.attached?
# on controller controller
def show
@user = User.find(params[:id])
respond_to do |format|
format.json
end
end