Paperclip:url不会创建路由

时间:2014-10-06 13:37:45

标签: ruby-on-rails paperclip

使用带回形针的:url选项有什么意义? :path选项实际上确实改变了保存文件的位置,但是:url选项似乎没有做任何事情。它仅在指向可公开访问的文件位置时才有效。此时,任何人都可以访问该网址。如果我更改网址以使其与路径不匹配,则无效。据我所知,它不会创建任何路线。这里有什么我想念的东西。这个选项有什么意义?在没有实际创建路线的情况下让某人指定:url似乎过于混乱。

1 个答案:

答案 0 :(得分:3)

我发现this post有助于理解:path:url之间的区别。

  • :path设置应用程序中存储文件的目录。
  • :url设置用户可以用来访问图片的网址。

你是对的,paperclip不会为你创建一条路线。但是,:url选项可让您选择用户可用于下载特定图像的(现有)路线。

:path:url通常齐头并进。如果您坚持使用回形针:default_url,则已经为您配置了路径。只需点击网址,一切都会正常工作。

更改文件位置

在此示例中,我正在呈现用户头像:

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

现在,假设您想要更改存储图像的位置,您可以将以下代码添加到模型中:

  has_attached_file :avatar,
    :path => "public/system/:class/:id/:filename"

但是,图像无法成功渲染。这是因为存储图像的新路径与:default_url不匹配。因此,您还需要指定一个新网址:

  has_attached_file :avatar,
    :path => "public/system/:class/:id/:filename"
    :url => "/system/:class/:id/:basename.:extension"

现在,图片网址与服务器上存储文件的位置相匹配,图片呈现成功。

路径与网址

总而言之,:url告诉回形针在服务器上寻找图像的位置。 :path告诉回形针在创建或更新记录时上传图像的位置。

:path:url都应指向同一位置,以便成功呈现图片。