Ruby on rails 使用CarrierWave和RMagick处理获取错误
我正在使用Rails 4,并尝试上载一个图像,然后在处理后存储它 我只使用一个视图,我希望用户上传图像,我处理图像,将其存储在db中,然后用新处理的图像重新加载页面 我的模型(user.rb)Ruby on rails 使用CarrierWave和RMagick处理获取错误,ruby-on-rails,ruby,ruby-on-rails-4,imagemagick,rmagick,Ruby On Rails,Ruby,Ruby On Rails 4,Imagemagick,Rmagick,我正在使用Rails 4,并尝试上载一个图像,然后在处理后存储它 我只使用一个视图,我希望用户上传图像,我处理图像,将其存储在db中,然后用新处理的图像重新加载页面 我的模型(user.rb) class用户
class用户
上传器(image_Uploader.rb)
编码:utf-8
类ImageUploader需要“Rmagick”
类AppMainController<应用程序控制器
def索引
#文件上载时的页面重新加载处理
if(参数有_键(“文件输入”))
@u=用户。新
@u、 image=params[“文件输入”]
如果(@u.save)
render js:“警报(‘已保存’)”
其他的
render js:“警报('保存图像时出错!重试!')”
结束
#初始页面加载
其他的
结束
结束
结束
我使用image\u tag@u.image\u url
每次我在image\u uploader.rb中添加任何类型的处理时,我都会不断得到“堆栈级别太深”。如果未添加任何处理,则图像可以正常上载
有什么想法吗?我也遇到了同样的问题。这看起来像是rmagick宝石的问题 编辑: 问题出在凯斯身上。试试这个:
gem 'rmagick', :require => 'RMagick'
另请参见github上的和或。
我切换到mini_magick来修复它。(不太理想,但现在对我有效。)
上载器类(注释掉RMagick):
档案:
gem 'mini_magick'
“堆栈级别太深”通常意味着递归调用函数时没有任何结束递归条件。所以从你的代码来看,我猜是
source=source。sepiatone
不知何故再次触发了进程方法,导致了无限递归。sepiatone是来自RMagick gem的一个方法,所以我认为它有一些问题。实际上,我也尝试过MiniMagick。调整大小工作正常。但它开始给我.sepiatone和我使用的任何其他方法的“命名错误”。
require 'Rmagick'
class AppMainController < ApplicationController
def index
# page reload handling when the file uploads
if(params.has_key?("file-input"))
@u= User.new
@u.image = params["file-input"]
if(@u.save)
render js: "alert('SAVED')"
else
render js: "alert('Error while saving image! Try Again!')"
end
# initial page load
else
end
end
end
gem 'rmagick', :require => 'RMagick'
include CarrierWave::MiniMagick
gem 'mini_magick'