![](/img/trans.png)
[英]Rails ActiveStorage issue: “file not found” error for rails_blob_path, even though the path works manually
[英]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.