ruby-on-rails - 是否可以使用 URL 在另一个应用程序中显示来自 rails 事件存储的图像?

标签 ruby-on-rails electron rails-activestorage

我正在尝试使用事件存储从 Rails API/后端访问用户头像对象,并使用 <img> 在 Electron 桌面应用程序中显示它。标签。我一直在图像标签的 src 属性中尝试各种 URL 格式组合,但总是遇到 rails 路由错误。
我试过使用 key ,以及 attached_sgid rails 中的字段具有以下 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"
甚至可以以这种方式显示来自事件存储的图像吗?

最佳答案

我相信你应该从你的后端 API 返回准备好使用的 URL,而不是在你的 Electron 应用程序上构建 URL。
您可以使用以下方法从您的模型中找到正确的 url:

url_for(user.avatar)
有一些选项可以退货。如果你不介意让你的模型有点脏,你可以创建一个名为 avatar_url 的方法。然后用你的 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

关于ruby-on-rails - 是否可以使用 URL 在另一个应用程序中显示来自 rails 事件存储的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64199761/

相关文章:

html - Rails/Bootstrap/css/响应式图像尺寸小

mysql - 如何使用 Ruby 将数据库从 Sqlite3 转换为架构不一致的 Mysql

javascript - 加农炮查找模块。 Electron

javascript - 如何将 git-hooks 与 Electron 应用程序连接起来

node.js - Electron-Builder:在MacOS上使用松鼠构建Windows安装程序失败

ruby-on-rails - 如何调试 Assets 提示语法错误?

ruby-on-rails - 如果 Controller 中没有操作,rails 如何执行 View ?

rails-activestorage - Rails 和 active_storage : Cannot load `Rails.config.active_storage.service` : (RuntimeError) Missing service adapter for "S3"

ruby-on-rails - 直接链接(无重定向)到 ActiveStorage 中的文件

ruby-on-rails - has_one_attached 时的默认附件