Paperclip:url不会创建路由
使用带回形针的:url选项有什么意义? :path选项实际上确实改变了保存文件的位置,但是:url选项似乎没有做任何事情。 它仅在指向可公开访问的文件位置时才有效。 此时,任何人都可以访问该url。 如果我更改URL以使其与路径不匹配,则它不起作用。 据我所知,它不会创建任何路线。 这里有什么我想念的东西。 这个选项有什么意义? 让某人指定:url而不实际创建路线似乎过于混乱。
我发现这篇文章有助于理解:path
和:url
之间的区别。
-
:path
设置应用程序中存储文件的目录。 -
:url
设置用户可用于访问图像的URL。
你是对的,paperclip不会为你创建一条路线。 但是, :url
选项确实使您能够选择用户可用于下载特定图像的(现有)路线。
:path
和:url
通常是齐头并进的。 如果您坚持使用回形针:default_url
已经为您配置了路径。 只需点击url,一切都会正常工作。
更改文件位置
在这个例子中,我正在呈现一个用户头像:
<%= image_tag @user.avatar.url %>
现在,假设您想要更改存储图像的位置,您可以将以下代码添加到模型中:
has_attached_file :avatar, :path => "public/system/:class/:id/:filename"
但是,图像无法成功渲染。 这是因为存储图像的新路径与:default_url
不匹配。 因此,您还需要指定一个新url:
has_attached_file :avatar, :path => "public/system/:class/:id/:filename" :url => "/system/:class/:id/:basename.:extension"
现在,图像url与文件存储在服务器上的位置相匹配,图像呈现成功。
路径与URL
总结一下, :url
告诉paperclip在服务器上寻找图像的位置。 :path
在创建或更新记录时告诉paperclip上传图像的位置。
两者:path
和:url
应指向同一位置,以便成功呈现图像。