Tay*_*Eke 20 sprockets asset-pipeline ruby-on-rails-4 asset-sync
对不起,如果这是一个简单问题的冗长积累,但我想清楚我的想法.
我现在已经在几个项目中使用了Rails 4,并且我一直在使用它image_tag('/assets/image.png')
来解决资产路径助手在Rails 4中如何工作的变化.直到今天,当我决定更多地了解这些变化并发现第一次更改时注意在链轮轨道.我还注意到ASSET_PUBLIC_DIRECTORIES
Rails助手中的/actionview/lib/action_view/helpers/asset_url_helper.rb#L170只指向公用文件夹.对我来说很明显,如果你正在访问静态文件,Rails希望你使用公共文件夹.
所以现在我已经想到了这一点,我只是无法理解为什么edge rails docs清楚地说明了这一点:
在以前版本的Rails中,所有资产都位于公共子目录中,例如图像,javascripts和样式表.使用资产管道,这些资产的首选位置现在是app/assets目录.
image_path实际上会生成一个uri到public/images文件夹,这完全相反.
总而言之,我需要使用所有可用的帮助程序和摘要构建器,因为我最终使用asset_sync将资产部署到S3 .
所以我的问题只是; 是否有正确的位置来放置图像/非编译资产并使用asset_path助手?所有文档和所有其他堆栈溢出对话都是关于使用app/assets文件夹的人,但是sprockets-rails希望我们将public用于非摘要资产.网络上的文档和信息是否需要更新,或者其他人只是通过在/ assets /之前预先设置所有资产路径来实现?
更新:我认为我确实遇到了一个问题,我没有重新启动我的开发服务器,并且app/assets/images中的图像没有显示出来,所以它会回退到公众面前.还要注意我在我的paperclip default_url中使用了资产助手(在我找到的几个堆栈溢出答案中引用资源的方式被引用,但是在回形针中使用带有插值选项的资产路径助手也将回退到公众,因为未插入的资产名称显然不会被发现为现有文件.
Ama*_*H-V 31
当您使用时rake assets:precompile
,Rails会将您app/assets
文件夹中的所有资源移动到public/assets
.这是因为普通浏览器无法访问您的app
目录,但可以访问public
.
所以,回答你的问题,这是我的想法.如果您的图像是用于您的网站布局,例如徽标或背景,那么您应该将它们存储在app/assets/images
目录中,但是,如果图像是用户生成的,例如个人资料图像,那么这些图像应该直接存储在诸如public/images
.理想情况下,您可以将它们存储在S3或CDN中,但您已经这样做了.
作为奖励,Carrierwave,一个Rails图像上传gem,使用public/images
类型路径作为其图像的默认存储,正如您可以在其配置文件中看到的:
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"images/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
归档时间: |
|
查看次数: |
18097 次 |
最近记录: |