我正在将现有的rails 2应用更新到rails 3,并且在理解资产管道时遇到一些麻烦。我已阅读guide,据我了解,以下任何目录中的文件都将解析为/ assets:
你可以使用助手访问它们......即
image_tag('logo.png')
但我不明白的是如何处理碰撞?例如,如果有以下文件,该怎么办:
如果我转到myapp.com/assets/images/logo.png,将返回哪个文件?我可以在我的应用程序中手动检查碰撞,但这在使用依赖资产管道的宝石时会成为一个痛点。
答案 0 :(得分:2)
根据我发现的内容,您不能拥有重复的文件,因为rails只返回找到的第一个文件。
这似乎有点像设计缺陷,因为宝石可能没有命名自己的资产
答案 1 :(得分:0)
为什么不利用index
manifest并将app/assets
组织成分离模块?然后,您可以引用特定图像image_tag('admin/logo.png')
,并以更有意义的方式免费获取您的UI代码库。您甚至可以将单个页面应用程序等复杂组件提升到自己的模块中,并从应用程序的不同部分重用它。
假设您的应用程序由三个模块组成:公共方面,管理员用户界面,以及让您的代理商跟踪贵公司销售流程的CRM:
app/assets/
├── coffeescripts
│ ├── admin
│ │ ├── components
│ │ ├── index.coffee
│ │ └── initializers
│ ├── application
│ │ ├── components
│ │ ├── index.sass
│ │ └── initializers
│ └── crm
│ ├── components
│ ├── index.sass
│ └── initializers
├── images
│ ├── admin
│ ├── application
│ └── crm
└── stylesheets
├── admin
│ ├── components
│ └── index.sass
├── application
│ ├── components
│ └── index.sass
└── crm
├── components
└── index.sass
21 directories, 6 files
不要忘记更新application.rb
,以便正确预编译:
config.assets.precompile = %w(admin.js application.js crm.js
admin.css application.css crm.css)