Ruby on rails 回形针在哪里放置缺少的.png默认图像?
我在应用程序中使用回形针,但我的控制器测试失败,原因是:Ruby on rails 回形针在哪里放置缺少的.png默认图像?,ruby-on-rails,image,paperclip,Ruby On Rails,Image,Paperclip,我在应用程序中使用回形针,但我的控制器测试失败,原因是: BlogsControllerTest#test_should_update_blog: Paperclip::AdapterRegistry::NoHandlerError: No handler found for "/images/original/missing.png" /Users/user/.rvm/gems/ruby-2.1.2/gems/paperclip-3.5.2/lib/paperclip/io_adapt
BlogsControllerTest#test_should_update_blog:
Paperclip::AdapterRegistry::NoHandlerError: No handler found for "/images/original/missing.png"
/Users/user/.rvm/gems/ruby-2.1.2/gems/paperclip-3.5.2/lib/paperclip/io_adapters/registry.rb:19:in `handler_for'
/Users/user/.rvm/gems/ruby-2.1.2/gems/paperclip-3.5.2/lib/paperclip/io_adapters/registry.rb:29:in `for'
/Users/user/.rvm/gems/ruby-2.1.2/gems/paperclip-3.5.2/lib/paperclip/attachment.rb:96:in `assign'
我不确定应该将missing.png
图像放在代码中的什么位置,我尝试了public/assets/original/missing.png
,但它似乎无法管理它
还有一点很奇怪:我有一个回形针.rb
初始化行:
Paperclip::Attachment.default_options[:default_url] = "/images/default_image.png"
但该应用程序仍在寻找missing.png
更新:好的,我认为默认的\u url在模型中被覆盖了:
has_attached_file :image, styles: { big: "1200X630>", thumb: "150X150" }, default_url: "/images/:style/missing.png"
我还是不知道该把图像放在哪里
更新2:
整个回形针初始值设定项:
Paperclip::Attachment.default_options[:styles] = { thumb: "100x100#", small: "200x200#", screen: "800x600#"}
Paperclip::Attachment.default_options[:default_url] = "/images/missing.png"
Paperclip::Attachment.default_options[:path] = ":rails_root/public/assets/:class/:attachment/:id_partition/:style/:hash.:extension"
Paperclip::Attachment.default_options[:url] = "/assets/:class/:attachment/:id_partition/:style/:hash.:extension"
Paperclip::Attachment.default_options[:hash_secret] = "XXXXXXXXXXXXXXXXX"
Paperclip.registered_attachments_styles_path = "public/assets/paperclip_attachments2.yml"
更新3:检查实际提升代码的回形针代码,异常被提升,这基本上是测试所有可用的适配器,看起来最接近我想要做的是测试传递的字符串是否是文件
发现这个我很惊讶,我想我可能出了什么问题。如果我将初始值设定项行交换到:
Paperclip::Attachment.default_options[:default_url] = File.new "public/images/missing.png"
那么例外情况就不同了:
BlogsControllerTest#test_should_update_blog:
NoMethodError: undefined method `gsub' for #<File:public/images/missing.png>
/Users/user/.rvm/gems/ruby-2.1.2/gems/paperclip-3.5.2/lib/paperclip/interpolations.rb:33:in `block in interpolate'
/Users/user/.rvm/gems/ruby-2.1.2/gems/paperclip-3.5.2/lib/paperclip/interpolations.rb:32:in `each'
然后:
@blog.image.class
=> Paperclip::Attachment
@blog.image.url
=> "/images/missing.png"
对于这一行代码:
Paperclip::Attachment.default_options[:default_url] = "/images/default_image.png"
曲别针正在/public/images/default\u image.png
更新:
所以您定义了样式big
和thumb
。回形针将在public/images/thumb/default\u image.png
或public/images/big/default\u image.png
中查找img,具体取决于您在
中调用的样式
更新#2(根据作者问题的更新#4)
明白了!如果您希望模型使用
:default\u url
请不要在参数中发送:image
。从参数中删除图像并查看它的运行情况`在Rails 5中,我在路径中使用了:style:
Paperclip::Attachment.default_options[:default_url] = "/images/folder/:style/missing.png"
例如,如果该图像不存在:
<%= image_tag @photo.picture.url(:medium) %>
好的,我已经删除了默认的图像覆盖,并将初始值设定项更改为
“/images/missing.png”
,并在/public/images/missing.png
下放置了一个图像,但我仍然收到错误未找到“/images/missing.png”的处理程序
只是想确保:你重新启动了rails服务器吗?肯定比抱歉好:):当我使用rake test运行单元测试时,我发现了问题。每次尝试都会重新启动“服务器”。谢谢,我已经将文件放在这两个目录中,但没有改进,我根据@Egersoz指出的,用整个回形针初始值设定项更新了这个问题。您可能没有在@model.image.url(:style)
方法中指定:style
。如果您这样做,它将在public/images/original
中查找图像。解决方法很简单:在.url()
方法中指定:style
,或者将missing.png
添加到dirpublic/images/original/missing.png
中的“has_attached\u file:image”代码在哪里?将图像放在/public/images/*中,并使您的has_attached\u文件:默认的\u url:“/image/*”这是wierd,如果没有分配任何附件,您是否保存默认附件?不,我把*放在哪里?您把文件名放在哪里。您的测试看起来怎么样?loke@dongiuliogotcha!如果您希望模型使用:default_url不在参数中发送:image
。从参数中删除图像
,让我们看看它是如何运行的`\
<%= image_tag @photo.picture.url(:medium) %>
/images/folder/medium/missing.png