我刚刚安装了Paperclip的插件,我收到以下错误消息,但我不确定原因:
NoMethodError (undefined method `has_attached_file' for #<Class:0x10338acd0>):
/Users/bgadoci/.gem/ruby/1.8/gems/will_paginate-2.3.12/lib/will_paginate/finder.rb:170:in `method_missing'
app/models/post.rb:2
app/controllers/posts_controller.rb:50:in `show'
Run Code Online (Sandbox Code Playgroud)
它引用了will_paginate gem.从我能找到的,似乎我PostsController#index或者以前尝试安装gem而不是插件有问题,在这种情况下我读过我应该能够以/config/environments.rb某种方式通过文件来修复.
我之前认为以前的gem安装并不重要,因为我在安装插件之前删除了旧版本的网站.在该站点的当前版本中,我显示该表已在迁移后使用Paperclip列进行更新.这是我的代码:
PostsConroller#show:
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @post }
end
end
Run Code Online (Sandbox Code Playgroud)
Post 模型:
class Post < ActiveRecord::Base
has_attached_file :photo
validates_presence_of :body, :title
has_many :comments, :dependent => :destroy
has_many :tags, :dependent => :destroy
has_many :votes, :dependent => :destroy
belongs_to :user
after_create :self_vote
def self_vote
# I am assuming you have a …Run Code Online (Sandbox Code Playgroud) 当我上传照片时,我的模型未通过验证,即使没有任何验证也是错误的我已经返回此错误:
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command. and
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command.
Run Code Online (Sandbox Code Playgroud)
我确信这与ImageMagick无关,因为我已经从上传中删除了任何图像处理,我也尝试上传不同的mime类型,如.txt文件等.
此外,我发现了一些可行的方法.一篇博客文章声称将以下内容放在我的环境中(在本例中为development.rb)
Paperclip.options[:command_path] = "/opt/local/bin"
Run Code Online (Sandbox Code Playgroud) 在rails 3.2.2中使用Paperclip 3.0.1我收到此错误:
**Paperclip::AdapterRegistry::NoHandlerError**
(No handler found for "2009-11-29-133527.jpg"):
Run Code Online (Sandbox Code Playgroud)
在我的模型中,我有:
class Product < ActiveRecord::Base
...
has_many :assets
accepts_nested_attributes_for :assets
end
class Asset < ActiveRecord::Base
belongs_to :product
has_attached_file :image,
:path => ":rails_root/public/system/:attachment/:id/:style/:filename",
:url => "/system/:attachment/:id/:style/:filename",
:styles => { :medium => "300x300>", :thumb => "100x100>" }
end
Run Code Online (Sandbox Code Playgroud)
例外是在:
def create
**@product = Product.new params[:product]**
...
end
Run Code Online (Sandbox Code Playgroud)
与params:
{...,
"product"=>{"title"=>"wibble1",
**"assets_attributes"=>{"0"=>{"image"=>"2009-11-29-133527.jpg"}
},**
"description"=>"Who is wibble...",
"price"=>"23.45"
},
"commit"=>"Create Product",
...}
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么?
如果没有图像与记录关联,如何防止调用关联图像的图像标记?
<%= image_tag @agent.avatar.url %>
Run Code Online (Sandbox Code Playgroud)
...如果没有与该代理相关联的图像,则会向我显示"Missing"文本.我想先测试看看是否有可用的图像,然后如果测试返回true则渲染上面的标记.
更好的是,如果没有专门提供图像,我还有指定默认图像吗?
Rails的Paperclip插件有一个调整大小选项,可以保持图像的比例.根据Ryan Bates的Paperclip Railscast,要确保选项已打开,您必须在要调整大小的样式的末尾添加一个大于号的符号,如下所示:
:styles => { :small => "160x160>" }
Run Code Online (Sandbox Code Playgroud)
我正在寻找Paperclip将我的图像调整到一个确切的大小,即使这意味着它不成比例,所以我认为删除大于号就可以了,如下:
:styles => { :small => "160x160" }
Run Code Online (Sandbox Code Playgroud)
好吧,事实证明没有任何反应.因此,首先,大于号是多余的.不过,我仍然留下以下问题:
如何将图像强制设置为一定大小,忽略比例?
谢谢!
image-manipulation file-upload ruby-on-rails imagemagick paperclip
我想使用Paperclip在上传时剪裁图像,以从原始图片的中心获得方形拇指.我发现文档中的方法似乎完全符合我的要求:
transformation_to(dst,crop = false)
问题是我无法弄清楚在哪里使用这种方法.简单地将一些东西作为参数传递到这里会很棒:
has_attached_file :picture,
:styles => { :medium => "600x600>", :thumb => "something here" } 我有一个使用这样的回形针的模型:
has_attached_file :avatar, :styles => { :large => "100x100>" , :medium => "50x50>", :small => "20x20>" }, :default_url => '/images/missing-owner_:style.png'
Run Code Online (Sandbox Code Playgroud)
我用to_json方法导出这个模型,我想导出图像URL,所以我可以在javascript中使用它.
我知道我可以在视图中访问这样的url:
<%= image_tag model.avatar.url(:medium) %>
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能在to_json方法中做同样的事情.
我有一些这样的:
respond_to do |format|
render :json => @model.to_json(:only => [:id,:name,:homephone,:cellphone])
end
Run Code Online (Sandbox Code Playgroud) 我尝试将本地图像存储在rails控制台中.
因为我的本地存储中有很多图片(我使用爬虫来下载大量的图片),我想将它们存储到数据库中,利用回形针来做一些图像工作,比如缩略图等.如果我使用网页来将新图片逐一保存到数据库中,会耗费大量时间.所以我想在rails控制台(一些代码)中找到一种可以批量保存图片到数据库的方法.
愚蠢的问题?
<img alt="Phone_large" src="/system/photos/1/small/phone_large.jpg?1238845838" />
Run Code Online (Sandbox Code Playgroud)
为什么"?1238845838"被添加到图像路径?
如果没有它我怎么能得到我的路径/网址?
我正在使用Rails和Paperclip制作一个小文件上传应用程序.我希望能够在完成上传文件的服务器上返回文件路径,但我似乎无法弄清楚如何获取路径?Paperclip似乎只记录文件本身的名称.
现在有人怎么做?
paperclip ×10
ruby-on-rails ×10
ruby ×4
file-upload ×2
console ×1
crop ×1
imagemagick ×1
plugins ×1