Rails 3.1: Determine if asset exists

后端 未结 4 806
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-24 00:42

Is there a built-in way to determine if an asset exists without resorting to File.exists?(File.join(Rails.root, \"foo\", \"bar\", \"baz\")) and that looks throu

相关标签:
4条回答
  • 2020-12-24 01:21

    Since this is still the top question when searching Google, and since the accepted answer does not work properly in production (at least in some cases), here is the solution that works for me (Rails 4.2.5.1):

    def asset_exist?(path)
      if Rails.configuration.assets.compile
        Rails.application.precompiled_assets.include? path
      else
        Rails.application.assets_manifest.assets[path].present?
      end
    end
    

    This is copied from this github issue

    0 讨论(0)
  • 2020-12-24 01:21

    See this answer: https://stackoverflow.com/a/8217598/549252

    = Rails.application.assets.find_asset("my_asset.css").nil?
    
    0 讨论(0)
  • 2020-12-24 01:24

    Please see the answer here for a discussion on why find_asset may not always work:

    Include Assets Only If They Exist

    0 讨论(0)
  • 2020-12-24 01:31

    Given an image in app/assets/images/lolshirts/theme/bg-header.png,

    Rails.application.assets.find_asset 'lolshirts/theme/bg-header.png'
     => #> Sprockets::StaticAsset:0x80c388ec pathname="/Users/joevandyk/projects/tanga/sites/lolshirts/app/assets/images/lolshirts/theme/bg-header.png", mtime=2011-10-07 12:34:48 -0700, digest="a63cc84aca38e2172ae25de3d837c71a">
    
    Rails.application.assets.find_asset 'notthere.png'
     => nil
    
    0 讨论(0)
提交回复
热议问题