Rails 5.1 : url public 文件夹中文件的助手

Rails 5.1 : url helper for files in public folder

在 Rails 5.1 中,如果我们对 public 文件夹中的文件使用 asset_path,则会出现弃用警告。

DEPRECATION WARNING: The asset "favicon.ico" is not present in the asset pipeline.Falling back to an asset that may be in the public folder. This behavior is deprecated and will be removed.

所以我试了public_asset_path,但是不行,有帮手吗?

你可以使用 Rails.public_path 获取 public 目录,然后从那里找到文件,你也可以使用 #{RAILS_ROOT}/public 它们都做同样的事情。

来源:Getting absolute path to the file inside the public folder in Rails

如果想在没有资产管道的情况下使用辅助方法,需要指定skip_pipeline选项。

像这样。

image_path("user/favicon.png", skip_pipeline: true)

或者如果想为整个应用程序启用资产回退, config.assets.unknown_asset_fallback 可以设置为真。 参见:http://guides.rubyonrails.org/asset_pipeline.html#raise-an-error-when-an-asset-is-not-found

所以我在helpers/application_helper.rb中添加了这个方法

module ApplicationHelper
  def public_path(path)
      "#{ Rails.env.development? ? 'http://localhost:3000/' : 'https://cdn.mysite.fr/' }#{ path }"
  end
end

然后我可以在视图中使用 public_path('images/image.jpg')