【发布时间】:2010-11-19 17:44:17
【问题描述】:
我有一个令人困惑的错误:
我使用 Paperclip 2.3.5 在 Ruby 1.9.2 上运行 Rails 3.0.0。
当我上传文件时,我收到 500 错误。
NameError (uninitialized constant ActionDispatch::Request::UploadedFile):
config/initializers/fix_params.rb:13:in `normalize_parameters'
config/initializers/fix_params.rb:19:in `block in normalize_parameters'
config/initializers/fix_params.rb:19:in `each'
config/initializers/fix_params.rb:19:in `normalize_parameters'
config/initializers/fix_params.rb:19:in `block in normalize_parameters'
config/initializers/fix_params.rb:19:in `each'
config/initializers/fix_params.rb:19:in `normalize_parameters'
Rendered /Users/vjmayr/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (10.2ms)
我已经看到 Rails 3.0.2 和 .3 发生了类似的事情,但我不知道为什么会在这里发生。有人帮我找出问题吗?
谢谢!瓦伦丁
添加配置/初始化程序/fix_params.rb:
module ActionController
class Request
private
# Convert nested Hashs to HashWithIndifferentAccess and replace
# file upload hashs with UploadedFile objects
def normalize_parameters(value)
case value
when Hash
if value.has_key?(:tempfile)
upload = value[:tempfile]
upload.extend(UploadedFile)
upload.original_path = value[:filename]
upload.content_type = value[:type]
upload
else
h = {}
value.each { |k, v| h[k] = normalize_parameters(v) }
h.with_indifferent_access
end
when Array
value.map { |e| normalize_parameters(e) }
else
value.force_encoding(Encoding::UTF_8) if value.respond_to?(:force_encoding)
value
end
end
end
end
【问题讨论】:
-
您可能想查看
config/initializers/fix_params.rb,因为这是Rails 的某种非标准扩展,它可能会出现故障。也许您可以修改问题并添加有关其中内容的详细信息。 -
嗨,tadman,我在我的问题中添加了 fix_params.rb。我将其与原始安装保持不变。