Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用CarrierWave和RMagick处理获取错误_Ruby On Rails_Ruby_Ruby On Rails 4_Imagemagick_Rmagick - Fatal编程技术网

Ruby on rails 使用CarrierWave和RMagick处理获取错误

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用户

我正在使用Rails 4,并尝试上载一个图像,然后在处理后存储它

我只使用一个视图,我希望用户上传图像,我处理图像,将其存储在db中,然后用新处理的图像重新加载页面

我的模型(user.rb)

class用户
上传器(image_Uploader.rb)

编码:utf-8 类ImageUploader 控制器(app_main_Controller.rb)

需要“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'