You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 8 资产管道:如何通过Propshaft判断资产是否存在?

在Rails 8的Propshaft中检查资产是否存在的方法

在Sprockets时代常用的Rails.application.assets.find_asset(path).present?写法,在Propshaft里已经行不通了——Propshaft的资产管理逻辑和Sprockets完全不同,没有直接对应find_asset的顶层方法。

要在Propshaft中检查资产是否存在,你需要通过它的**resolver(解析器)**来做判断:

# 检查指定路径的资产是否存在
Rails.application.assets.resolver.find_asset(path).present?

或者更简洁的写法(利用Ruby的双重否定转布尔值):

!!Rails.application.assets.resolver.find_asset(path)

补充说明:

Propshaft的资产查找逻辑都封装在Resolver模块里,resolver.find_asset会遍历你在Rails配置中定义的所有资产路径(比如app/assets、vendor/assets等),如果找到匹配的资产文件,就返回一个Propshaft::Asset实例;如果找不到,就返回nil。所以通过判断返回值是否为非空,就能确定资产是否存在。

内容的提问来源于stack exchange,提问作者Timothy Alexis Vass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:52:02