【问题标题】:Accessing model from inside Carrierwave uploader从 Carrierwave 上传器内部访问模型
【发布时间】:2011-08-08 05:00:19
【问题描述】:

我正在尝试为我正在开发的 Web 应用程序实现手动裁剪,到目前为止我已经做到了:

  version :croppedversion do
    process :manualcrop => [model.crop_x, model.crop_y, model.crop_h, model.crop_w]
  end

  process :resize_to_limit => [600, 600]

  def manualcrop(x,y,h,w)
    manipulate! do |img|
      img = img.crop(x,y,h,w)
    end
  end

问题是模型出现为零。从我读过的文档来看,这将是正确的方法。

有什么建议吗?我现在已经将裁剪的调用移到模型中的回调中,但真的希望它驻留在carrierwave中

【问题讨论】:

    标签: ruby-on-rails ruby crop rmagick carrierwave


    【解决方案1】:

    我遇到了类似的问题。我有

    attr_accessor :crop_x, :crop_y, :crop_w, :crop_h

    但忘记在 attr_accessible 中包含作物变量。通过做

    attr_accessible :description, :image, :crop_x, :crop_y, :crop_w, :crop_h

    我能够获得模型作物变量。我不知道这是否能解决您的问题,因为您描述的是返回 nil 而不是裁剪方法的模型。

    【讨论】:

    • 我也遇到了这个问题,因为我对保持 attr_accessible 的直线性感到很恐惧,但是唉,它是 nil 的模型。
    【解决方案2】:

    当我试图访问模型数据时,我的对象在 CarrierWave 中为 nil 时遇到了很大的困难。

    对我来说,问题出在我的控制器上。这看起来不太适用于您的情况,但我正在运行查询:model.user.foo - 如果我在创建对象后立即将此用户分配给模型,它将出现 nil。

    【讨论】:

    • 在您的载波上传器中成功访问模型的位置?我似乎只能在 path 方法中访问它,而不是任何自定义(例如我自己的处理器)
    • 不幸的是,我在路径方法中解决了我自己的问题,没有别的地方。
    • 但问题是:你做了什么来解决这个问题。请显示一些代码。
    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多