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