【问题标题】:Rails image_tag auto prefixes "/images" before @user.avatar.url instead of "/assets" in paperclipRails image_tag 在@user.avatar.url 之前自动添加“/images”前缀,而不是回形针中的“/assets”
【发布时间】:2015-08-14 19:39:27
【问题描述】:

我正在使用回形针上传用户头像。 这是用户模型:

has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "user.png", :path => "app/assets/images/:class/:attachment/:id/:basename_:style.:extension", :url => ":class/:attachment/:id/:basename_:style.:extension"

所以图像保存在 app/assets/images/user/avatar/:id/:basename_:style.:extension

但是当我这样做时

<%= image_tag @user.avatar.url %>

显示为:

<img src="/images/users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original.jpg" alt="99e88dc27c19d8c6163d9cd305f738be original">

即插入“/images”而不是“/assets”

我仔细检查了,头像图片存在于assets/images/user/avatar/文件夹中

尽管页面中的所有其他图像都使用资产管道正确显示“/assets/logo-thebighashgohere.png”

注意: 如果我手动将图像 url 作为字符串插入,这将正常工作 即:

<%= image_tag "users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original.jpg" %>

正确显示为

<img src="/assets/users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original-thebighashgohere.jpg" alt="99e88dc27c19d8c6163d9cd305f738be original thebighashgohere">

【问题讨论】:

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


    【解决方案1】:

    我强烈建议您不保存用户生成的内容到资产文件夹!

    如果您的网站进入生产模式,资产将被编译,并且您在运行时输入的所有内容都不会被捕获。 类似的东西属于 /public 目录 (!)

    解决您的问题

     :url => ":class/:attachment/:id/:basename_:style.:extension
    

    你告诉回形针如何生成你的“url”。使用“路径”定义文件在内部存储的位置,使用 url 控制如何生成路由。您的死记硬背是错误的,其中没有任何路径。

    但同样 - 不要将这些图片保存到资产中!


    顺便说一句:我想知道您的解决方案在生产模式下是否可行。 assetspipeline 正在生成附加了摘要的文件,而回形针对这些摘要一无所知,它总是会在没有摘要标记的情况下呈现路线。这样您就无法从资产管道中调用图像。所以你的整个概念在生产中不起作用,但我可能错了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 2020-03-18
      • 2012-01-28
      相关资源
      最近更新 更多