当我尝试使用带有我的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)
如果我能补充额外的材料来帮助你,请告诉我.
我有模型人物有很多图像,其中图像有一个名为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.
我正在尝试将图像合并到我的网络应用程序中,并在删除了一些功能后继续遇到此错误.它归结为我的"创建"应用程序控制器,我不完全确定我应该从哪里开始.
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) 我在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是保存附件的属性名称)
但是,如何检测该复选框,更重要的是,如何删除图像?我感谢任何帮助!
我有一个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选项需要根据使用的存储系统而有所不同.
任何建议或建议将不胜感激!:-)
我有一个rake任务,使用faker gem为随机数据播种应用程序.但是,我们还要在此rake任务中上传图像(如徽标).
我们已经设置了Paperclip,但没有办法在rake任务中以编程方式上传它们.有任何想法吗?
我一直在使用paperclip上传和自动调整我的Rails应用程序中的照片,我喜欢它.唯一的问题是每隔一个月,我疯狂的经理决定他想要一个新的尺寸来显示照片.所以我在我的照片模型中添加了一个新的风格,所有都适合新照片,但现有的照片现在是一个问题.现在我开始有多张照片要处理,我需要一种编程方式来调整现有照片的大小.对于这样的事情,也许有一些回形针技巧?如果我不需要,我真的不必弄清楚RMagick并自己写一个脚本.
我正在使用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) 我刚刚安装了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) paperclip ×10
ruby-on-rails ×10
ruby ×7
amazon-s3 ×2
factory-bot ×1
file-upload ×1
imagemagick ×1
rmagick ×1
upload ×1