ruby-on-rails - 如何获取存储在 Rails 控制器的活动存储中的附件的 url
问题描述
如何获取存储在我的 rails 控制器的活动存储中的 has_one 模型附件的 url。因此,我将能够将其作为 json 中的 api 的完整链接发送。到目前为止,我已经尝试了以下方法,但它们中的每一个都给出了各种问题:
current_user.image.service_url
---- #<ActiveStorage::Attached::One:0x 的未定义方法 `service_url'....Rails.application.routes.url_helpers.rails_disk_blob_path(current_user.image, only_path: true)
,它给了我这样的输出:"/rails/blob/%23%3CActiveStorage::Attached::One:0x007f991c7b41b8%3E"
但这不是一个网址,对吧?我无法在浏览器上点击并获取图像。
url_for
----#<Api::V1::UsersController:0x007f991c1eaa98 的未定义方法“active_storage_attachment_url”
解决方案
rails_blob_path
在控制器和模型中使用附件的方法
例如,如果您需要cover_url
在控制器中分配一个变量(例如 ),首先您应该url_helpers
在使用方法后rails_blob_path
包含一些参数。你可以在任何模型、工人等中做同样的事情。
完整示例如下:
class ApplicationController < ActionController::Base
include Rails.application.routes.url_helpers
def index
@event = Event.first
cover_url = rails_blob_path(@event.cover, disposition: "attachment", only_path: true)
end
end
推荐阅读
- linux - 调用 mkdir 到主目录会在当前工作目录中创建所述目录吗?
- drupal - 没有路径的主页
- javascript - 你如何用javascript编写一个程序,要求用户输入一个数字列表,然后找到数字的平均值
- spring - Spring Boot 在同一端口上将 HTTP 重定向到 HTTPS
- node.js - CORS “它没有 HTTP ok 状态。”
- javascript - JQuery:如何将文件推送到另一个输入数组值?
- hosting - 我应该在哪里托管个人网站?
- swift - 使用 swift 递归地列出文件夹中的所有文件
- django - Django API 中的安全性
- reactjs - 任务执行失败:react-native-device-info:compileDebugJavaWithJavac