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
添加到dir
public/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