红宝石 1.9.2 带回形针的 lambda



我正在将我的工作应用程序升级到 1.9.2,但找不到以下问题的答案:

我在控制器中创建了一个这样的资产:

@asset = Asset.new(params)

然后在我的模型中使用 lambda 动态生成样式,如下所示:

has_attached_file :asset,
  :styles => lambda { |attachment| attachment.instance.choose_styles}

然后我检查我的参数中的某个值,如下所示:

def choose_styles
  if self.item_name == 'Car'
    { :small => ["200x200>"], :medium => ["400x400>"], :large => ["700x700>"], :full_screen => ["1000x700>"] }
  else
    ........
 end

问题是item_name在 1.9.2 中为 nil,直到运行完之后,似乎从参数设置。 这一切都可以切换回 1.8.7

任何人都可以看到帮助我吗?

谢谢瑞克

我知道这不是一个适合你问题的答案。顺便说一下,您可以切换到载波(https://github.com/jnicklas/carrierwave)。您可以以更精细的方式选择格式,创建各种版本并嵌套它们。

例如,一个 ipothetic AssetUploader 可以是:

...
version :thumb_200x200 do
  process :resize_to_fill => [200,200]
end
version :big_600x600 do
  ...
end
...
version :car, :if => in_category(:car)?
  version :thumb_200x200
  version :another_etc
end
...
protected
  def in_category?(name)
    model.item_name.downcase == name.to_s
  end
...

这只是一个代码示例,请根据您的需求进行调整;)

干杯一个。

相关内容

  • 没有找到相关文章

最新更新