【问题标题】:undefined method `stringify_keys'未定义的方法`stringify_keys'
【发布时间】:2011-12-15 04:04:00
【问题描述】:

当我尝试使用 Paperclip gem 上传图片时,出现此错误:

NoMethodError(<:http::uploadedfile:0x000000025387f0> 的未定义方法 `stringify_keys')

class MenuItem < ActiveRecord::Base
 has_one :image


end

class Image < ActiveRecord::Base
 belongs_to :menu_item
 has_attached_file :image, :styles => {
            :large => "640x480",
            :medium => "300x300", 
            :thumb => "100x100" 
           }
end

【问题讨论】:

标签: ruby-on-rails-3 file-upload paperclip


【解决方案1】:

我以前见过这种错误发生,通常是当人们尝试像这样调用update_attributes 时:

update_attributes(params[:image])

调用实际上应该是这样的:

update_attributes(:image => params[:image])

有点在黑暗中拍摄,但如果是这样,我相信我们都会留下深刻的印象。

【讨论】:

  • 这也对我有用,只是我使用的是 build() 而不是 update_attributes()。谢谢:)
  • @RyanBigg 你能详细说明一下这个问题吗?我在上传我通过 Submission.uploaded_file = params[:submission] 创建的 zip 文件时遇到了类似的问题。 Stringify Keys 只有在我打开 CanCan gem 时才会发生。
  • OP 可以将此标记为正确答案吗?这也解决了我的问题。
  • @Hamdan:天哪!是的!!!1one。 Paperclip 期望图像的所有属性都作为“图像”属性发送。 OP最初做的不是那样。
  • 这不是我要问的。我实际上无法理解 (:image => params[:image]) 与 (params[:image]) 有何不同,因为 params[:image] 内部的内容实际上是 :image 用来继承其状态的图像对象'图像对象'。谁能告诉我?
【解决方案2】:

在 Rails 3.2.2 中挣扎了一段时间后,我设法以这种方式解决了这个问题

(image = Image.new(image: params[:image])).save

更新属性(图像:图像)

【讨论】:

    【解决方案3】:

    我刚遇到这个问题,为了澄清一点,update_attributes 与 update_attribute 不同。

    以下应该有效:

    update_attributes(:image => params[:image])
    

    update_attribute(:image, params[:image])
    

    给你!与 attr_accesible 相关的 update_attributes 存在其他问题,但两者都有效。

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      相关资源
      最近更新 更多