标签: paperclip

使用Rails 4的Paperclip :: Errors :: MissingRequiredValidatorError

当我尝试使用带有我的rails blogging app的paperclip上传时,我收到此错误.当它说"MissingRequiredValidatorError"时,不知道它是指什么我认为通过更新post_params并给它:image它会没事,因为创建和更新都使用post_params

Paperclip::Errors::MissingRequiredValidatorError in PostsController#create
Paperclip::Errors::MissingRequiredValidatorError

Extracted source (around line #30):

def create
  @post = Post.new(post_params)
Run Code Online (Sandbox Code Playgroud)

这是我的posts_controller.rb

def update
  @post = Post.find(params[:id])

  if @post.update(post_params)
    redirect_to action: :show, id: @post.id
  else
    render 'edit'
  end
end

def new
  @post = Post.new
end

def create
  @post = Post.new(post_params)

  if @post.save
    redirect_to action: :show, id: @post.id
  else
    render 'new'
  end
end
#...

private

def post_params
  params.require(:post).permit(:title, :text, :image)
end    
Run Code Online (Sandbox Code Playgroud)

这是我的帖子助手

module PostsHelper
  def post_params
    params.require(:post).permit(:title, :body, :tag_list, :image)
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我能补充额外的材料来帮助你,请告诉我.

ruby ruby-on-rails paperclip ruby-on-rails-4

224
推荐指数
3
解决办法
6万
查看次数

通过回形针从URL保存图像

请建议我使用Paperclip从URL保存图像的方法.

ruby upload ruby-on-rails paperclip

119
推荐指数
5
解决办法
6万
查看次数

如何使用Factory Girl生成回形针附件?

我有模型人物有很多图像,其中图像有一个名为data的Paperclip附件字段,缩写版本如下所示:

class Person
  has_many :images
  ...
end

class Image
  has_attached_file :data
  belongs_to :person
  ...
end
Run Code Online (Sandbox Code Playgroud)

人员必须至少附上一张图像.

使用FactoryGirl时,我的代码类似于以下内容:

Factory.define :image do |a|
  a.data { File.new(File.join(Rails.root, 'features', 'support', 'file.png')) }
  a.association :person
end

Factory.define :person do |p|
  p.first_name 'Keyzer'
  p.last_name 'Soze'
  p.after_create do |person|
    person.assets = [Factory.build(:image, :person => person)]
  end
  # p.images {|images| [images.association(:image)]}
end
Run Code Online (Sandbox Code Playgroud)

(注意,我也尝试过上面注释的代码也尝试了)大多数时候,当我运行黄瓜功能时,我得到的错误类似于以下内容:

没有这样的文件或目录 - /tmp/stream,9887,0.png(Errno :: ENOENT)

...

有时测试成功运行.

谁能告诉我我在这里遇到的问题是什么,或者他们如何一起使用FactoryGirl和Paperclip来实现我想要实现的目标?

我正在使用Rails 3.

ruby-on-rails paperclip factory-bot

118
推荐指数
6
解决办法
3万
查看次数

NameError(未初始化的常量Paperclip :: Storage :: S3 :: AWS):

我正在尝试将图像合并到我的网络应用程序中,并在删除了一些功能后继续遇到此错误.它归结为我的"创建"应用程序控制器,我不完全确定我应该从哪里开始.

2015-02-06T20:30:12.292187+00:00 app[web.1]:    (1.9ms)  ROLLBACK
2015-02-06T20:30:12.296299+00:00 app[web.1]: NameError (uninitialized constant Paperclip::Storage::S3::AWS):
2015-02-06T20:30:12.296301+00:00 app[web.1]:   app/controllers/articles_controller.rb:24:in `create'
2015-02-06T20:45:14.691084+00:00 app[web.1]: [paperclip] saving /articles/images/000/000/013/original/git.jpeg
2015-02-06T20:45:14.698744+00:00 app[web.1]: Completed 500 Internal Server Error in 584ms
2015-02-06T20:45:14.700871+00:00 heroku[router]: at=info method=POST path="/articles" host=preston.herokuapp.com request_id=d9d02257-3616-4686-bce5-3d912cd528c2 fwd="76.22.102.38" dyno=web.1 connect=1ms service=698ms status=500 bytes=1754
Run Code Online (Sandbox Code Playgroud)

Articles_controller.rb

class ArticlesController < ApplicationController
http_basic_authenticate_with name: "name", password: "password", except: [:index, :show]

    def index
        @articles = Article.all.order("created_at DESC")
    end

    def show
        @article = Article.find(params[:id])
    end

    def new
        @article = Article.new
    end 

    def edit
        @article = Article.find(params[:id])

    end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails paperclip amazon-web-services

90
推荐指数
2
解决办法
3万
查看次数

Rails Paperclip如何删除附件?

我在Rails 3上使用Paperclip(带有Amazon s3).我想删除现有附件而不使用更新操作替换它.

我只发现了这样的一个实例在这里,不能得到那个工作,它只是不会删除,并没有什么在日志中说为什么.我想在表单上做这样的事情:

<%- unless @page.new_record? || !@page.image? -%>
    <%= f.check_box :image_delete, :label => 'Delete Image' %>
<%- end -%>
Run Code Online (Sandbox Code Playgroud)

(页面是模型的名称,image是保存附件的属性名称)

但是,如何检测该复选框,更重要的是,如何删除图像?我感谢任何帮助!

ruby ruby-on-rails paperclip

84
推荐指数
4
解决办法
5万
查看次数

如何根据当前的Rails环境设置回形针的存储机制?

我有一个rails应用程序,它有多个带有回形针附件的模型,这些附件都上传到S3.这个应用程序还有一个经常运行的大型测试套件.这样做的缺点是每次测试运行都会将大量文件上传到我们的S3帐户,这使得测试套件运行缓慢.它还会降低开发速度,并要求您具有Internet连接以便处理代码.

有没有合理的方法来设置基于Rails环境的回形针存储机制?理想情况下,我们的测试和开发环境将使用本地文件系统存储,生产环境将使用S3存储.

我还想将这个逻辑提取到某种共享模块中,因为我们有几个需要这种行为的模型.我想在每个模型中避免这样的解决方案:

### We don't want to do this in our models...
if Rails.env.production?
  has_attached_file :image, :styles => {...},
                    :path => "images/:uuid_partition/:uuid/:style.:extension",
                    :storage => :s3,
                    :url => ':s3_authenticated_url', # generates an expiring url
                    :s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
                    :s3_permissions => 'private',
                    :s3_protocol => 'https'
else
  has_attached_file :image, :styles => {...},
                    :storage => :filesystem
                    # Default :path and :url should be used for dev/test envs.
end
Run Code Online (Sandbox Code Playgroud)

更新:粘性部分是附件:path:url选项需要根据使用的存储系统而有所不同.

任何建议或建议将不胜感激!:-)

ruby-on-rails amazon-s3 paperclip

75
推荐指数
4
解决办法
2万
查看次数

如何使用Paperclip以编程方式设置文件上载

我有一个rake任务,使用faker gem为随机数据播种应用程序.但是,我们还要在此rake任务中上传图像(如徽标).

我们已经设置了Paperclip,但没有办法在rake任务中以编程方式上传它们.有任何想法吗?

ruby file-upload ruby-on-rails paperclip

67
推荐指数
3
解决办法
3万
查看次数

使用回形针和RMagick将现有图像调整为新样式

我一直在使用paperclip上传和自动调整我的Rails应用程序中的照片,我喜欢它.唯一的问题是每隔一个月,我疯狂的经理决定他想要一个新的尺寸来显示照片.所以我在我的照片模型中添加了一个新的风格,所有都适合新照片,但现有的照片现在是一个问题.现在我开始有多张照片要处理,我需要一种编程方式来调整现有照片的大小.对于这样的事情,也许有一些回形针技巧?如果我不需要,我真的不必弄清楚RMagick并自己写一个脚本.

ruby ruby-on-rails rmagick imagemagick paperclip

61
推荐指数
2
解决办法
1万
查看次数

是否可以配置Paperclip来生成HTTPS URL?

我正在使用Paperclip管理完全在HTTPS下提供服务的网站上的用户上传图像.为了避免IE7/IE8上的愚蠢安全警告,我还需要通过SSL提供这些图像.我通常使用以下内容渲染我的图像:

<%= image_tag @product.image.url(:large) %>
Run Code Online (Sandbox Code Playgroud)

哪里

class Product < ActiveRecord::Base

  has_attached_file :image,
                  :styles => {
                      :large => {:geometry => "616x450#"}
                  },
                  :storage => :s3,
                  :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"},
                  :path => ":attachment/:id/:style/:basename.:extension",
                  :bucket => CONFIG['s3_media_bucket'],
                  :default_url => "/assets/image_missing.png"
Run Code Online (Sandbox Code Playgroud)

并且生成的图像URL类似于:

http://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
Run Code Online (Sandbox Code Playgroud)

是否有魔术回形针选项将其更改为:

https://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails amazon-s3 paperclip ruby-on-rails-3

58
推荐指数
2
解决办法
1万
查看次数

为什么在安装PaperClip时会得到"has_attached_file"的"未定义方法"?

我刚刚安装了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)

ruby ruby-on-rails paperclip

52
推荐指数
2
解决办法
3万
查看次数