ruby-on-rails - 如何从 Rails 5 API only 应用程序提供本地图像 url
问题描述
我们只有一个 API,Rails 5 应用程序(所以没有管道)。我们希望 API 为我们服务器上的图像提供 URL。此图像由模型提供。此图像可能存在于app/assets/images
或中public/images
。在 Rails 模型中,什么方法会将当前主机/域附加到文件名?
我们希望ActionController::Base.helpers.asset_url("solar.png")
工作,但这会返回"\solar.png"
。
我们已将 default_url_options 设置为“localhost:3000”
让模型只提供文件名,而控制器/json 视图渲染器通过帮助程序提供 URL 部分是可以接受的。我说“可接受”,因为我们的模型正在决定应该返回什么图像。有时该图像来自本地服务器,有时它是来自不同服务器的绝对 URL。如果控制器提供 URL 部分,我们将不得不分别处理这两种情况。
解决方案
快速回答:
# development.rb
config.action_controller.asset_host = "http://localhost:3000"
# production.rb
config.action_controller.asset_host = "http://yourdomain.com"
常见的错误是设置config.action_controller.default_url_options
请记住,您有几个地方可以设置您的主机名:
config.action_controller.default_url_options
config.action_mailer.default_url_options
config.action_controller.asset_host
# Maybe others, I'm not sure
它通常是相同的值,但不是每次。
推荐阅读
- javascript - Node JS 将一个可能未定义的 JavaScript 对象传递给 pug 模板
- python - Python中的连接单元测试
- java - 从字符串中获取以空格分隔的 2 个整数
- angular - Angular ng-repeat 不起作用,但我可以单独显示数组元素
- c# - 如何在 C# 中获取 while 循环以在单行上打印
- highcharts - 使用 Highcharts 在极坐标图中旋转 xAxis 类别?
- angular - 在角度 5 中,为了使用 routerLink 路由到另一个组件视图,绝对需要什么?
- point-cloud-library - 用于 PCL 的二维 ICP
- java - 生成swagger java客户端代码时出错
- r - r中每月调整的每周数据