簡體   English   中英

Rails ActiveStorage rails_blob_path 生成無效的 url,在開始時缺少 /rails

[英]Rails ActiveStorage rails_blob_path generating invalid url with missing /rails in start

我在:Rails: 6.0.1
紅寶石: 2.6.5

我在我的序列化程序之一中使用Rails.application.routes.url_helpers.rails_blob_path助手來生成 pdf 文件的路徑。 它在開發中一直很有效。 生成 url 像: /rails/active_storage/blobs/:signed_id/*filename
正如預期的那樣。

但是在生產中,同一個助手會以以下格式生成錯誤的網址:
/active_storage/blobs/:signed_id/*filename
注意 start 中缺少的/rails部分。

這顯然會導致訪問 url 時沒有路由匹配錯誤。

我一直在嘗試挖掘並找到 cuase,暫時我在我的routes.rb添加了以下routes.rb

get '/active_storage/blobs/:signed_id/*filename', to: 'active_storage/blobs#show'

我知道這只是一個 hack,但它現在有效。 我正在尋找真正的原因並解決這個問題。

所以我做了一些嘗試和試驗,我注意到這發生在我的生產控制台中:

Rails.application.routes.url_helpers.url_for(Record.last.file)
=> "https://mywebsite.com//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--8994a079b16e683a18ef1be83a6ae7f5c3/filename.pdf"

注意//rails部分,它是無效的,因為它有雙斜杠。 這讓我找到了解決方案。

解決方案

我的config/environment.rb文件中有這個:

Rails.application.default_url_options = Rails.application.config.action_mailer.default_url_options

production.rb默認 url 選項如下所示:

config.action_mailer.default_url_options = { host: ENV['SERVER_URL'] }

SERVER_BASE_URL是罪魁禍首,當我將其更改為https://mywebsite.com並重新啟動我的服務器時,它被設置為: https://mywebsite.com/ : SERVER_BASE_URL 繁榮!

雖然我不太清楚為什么會出現這種行為以及這是否是一個錯誤。 但這就是經過數小時奮斗后對我有用的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM