我创建了一个独立的ruby文件并成功在控制台上运行以确保Rmagick正在工作。但是,当我尝试在我的rails应用程序中使用相同的代码时,它很遗憾无效
这是我的模特
class Provider < ActiveRecord::Base
def crop_photo(url, x, y, w, h)
image = Magick::Image.new
urlimage = open(url)
image.from_blob(urlimage.read)
crop = image.crop(x,y,w,h)
crop.write('pool_cropped.jpg')
end
end
控制器
class ProvidersController < ProviderApplicationController
def crop
@provider = current_provider
coordinates = params["cordinates"]
image_path = params["path"]
w = coordinates[0][0]
h = coordinates[0][1]
x = coordinates[0][2]
y = coordinates[0][3]
@provider.crop_photo(image_path, x, y, w, h)
redirect_to root_path
end
end
我尝试过要求RMagick,但是rails会返回一个错误页面,说无法加载这样的文件
这是我尝试裁剪时得到的错误
Completed 500 Internal Server Error in 4.9ms
NameError (uninitialized constant Provider::Magick):
app/models/provider.rb:43:in `crop_photo'
app/controllers/providers_controller.rb:56:in `crop'
有什么建议吗?我正在使用Mac OSX,因此它不区分大小写
答案 0 :(得分:0)
您需要将require
放入您的提供者(模型)类中。
首先:检查您的Gemfile行:gem 'rmagick'
然后,捆绑安装
最后,
require 'RMagick'
class Provider < ActiveRecord::Base
def crop_photo(url, x, y, w, h)
image = Magick::Image.new
urlimage = open(url)
image.from_blob(urlimage.read)
crop = image.crop(x,y,w,h)
crop.write('pool_cropped.jpg')
end
end