Rails 5.1:公共文件夹中文件的url帮助程序

时间:2017-05-18 07:36:51

标签: ruby-on-rails asset-pipeline actionview

在Rails 5.1中,如果我们对公共文件夹中的文件使用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,但它没有用,是否有助手?

3 个答案:

答案 0 :(得分:14)

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

喜欢这个。

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

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

答案 1 :(得分:-1)

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

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

答案 2 :(得分:-2)

所以我在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')