我已经解决了有关此错误的每个stackoverflow问题: https://duckduckgo.com/?q=rails+Missing+host+to+link+to
所有文章都提到了相同的解决方案,即在您正在处理的环境文件中添加配置。就我而言,我添加到了development.rb:
Intent
但是我仍然收到臭名昭著的错误消息:
config.active_storage.service = :local
config.action_mailer.default_url_options = { host: "localhost", port: "3000" }
MyApp::Application.default_url_options = Robson::Application.config.action_mailer.default_url_options
Rails.application.routes.default_url_options = Robson::Application.config.action_mailer.default_url_options
在以下位置,如果我尝试打开在本地上传的文件:
Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
或者如果我尝试从ActiveAdmin访问文件(我将模型称为“附件”,而我正在使用ActiveStorage)
open(file.service_url)
我还尝试在字典中将“主机”设置为上述“ link_to”和“ open”功能的参数。我也尝试过“ only_path”。
什么都没有。
任何帮助将不胜感激!
P.S .:我的活动存储配置:
column(:file) {|a| link_to a.file.filename, a.file.service_url}
更新
尝试使用rails_representation_url却收到错误 ActiveStorage :: Attached的未定义方法'variation'
local:
service: Disk
root: <%= Rails.root.join("storage") %>
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
amazon:
service: S3
access_key_id: S3_ACCESS_KEY_ID
secret_access_key: S3_SECRET_ACCESS_KEY
bucket: S3_BUCKET
region: S3_REGION
答案 0 :(得分:0)
我将Rails从5.1升级到5.2,并且遇到了同样的问题。
解决方案:https://github.com/rails/rails/issues/32866
因此,当您使用ActiveRecord变体而不是
variant.service_url
做
rails_representation_url(variant, only_path: true)