【发布时间】:2019-12-07 21:55:06
【问题描述】:
我对编码还很陌生,我正在尝试为新应用程序设置 Rails 5 后端。我在 Projects 和 Skills 这两个模型之间创建了多对多关系,它们都使用 Amazon Web Services 的 S3 存储来附加图像。
我可以为每个模型发出 GET 请求,并在 json 响应中查看工作图像 URL,但是当我尝试在项目的 GET 请求中包含技能时,我收到没有图像 URL 的技能。
这是我调用技能“HTML”得到的一些示例 json:
created_at: "2019-12-06T04:27:52.537Z"
id: 4
image: (working URL for skill image)
name: "HTML"
updated_at: "2019-12-06T04:27:52.540Z"
这里是一个项目的 json,其中嵌套了技能“HTML”:
created_at: "2019-12-07T15:11:32.592Z"
id: 53
image: (working URL for project image)
skills: Array(1)
0:
created_at: "2019-12-06T04:27:52.537Z"
id: 4
name: "HTML"
updated_at: "2019-12-06T04:27:52.540Z"
__proto__: Object
length: 1
__proto__: Array(0)
title: "Card Game"
updated_at: "2019-12-07T19:35:08.751Z"
如您所见,技能“HTML”在嵌套时突然缺少对应的图片URL。
这是我对项目控制器的基本设置:
class ProjectsController < ApplicationController
def index
@projects = Project.all
render json: @projects, include: :categories
end
这是我的技能序列化器:
class SkillSerializer < ActiveModel::Serializer
attributes :id, :name, :created_at, :updated_at, :image
def image
object.image.service_url if object.image.attached?
end
end
有谁知道当一个模型包含在另一个模型关联中时如何包含一个属于模型的网络存储 URL?
【问题讨论】:
-
你能发布你用来显示图像的代码吗?我发现使用浏览器检查器查看它试图在哪里找到图像然后从那里去是最有用的。
-
@RockwellRice 该 URL 不存在让我渲染任何内容。我已经更新了我的帖子以显示我回来的 json。
-
image属性似乎包含链接到 S3 中图像的 URL。除了portfolio位。可能需要加个/什么的,是portfolio的页面URL吗? -
@RockwellRice json 的两个 sn-ps 中的图像 URL 都可以正常工作。第二个 sn-p 中的图像 URL 连接到项目,而不是技能。我进行了另一次更新以使差异更加清晰。
标签: ruby-on-rails amazon-web-services amazon-s3 ruby-on-rails-5 rails-activestorage