【问题标题】:TypeError (no implicit conversion of nil into String):TypeError(没有将 nil 隐式转换为 String):
【发布时间】:2016-01-14 03:34:20
【问题描述】:

日志表明错误在我的一个控制器的这一行中

    original_cloudinary = Cloudinary::Uploader.upload(params[:original_image],
                                     :public_id => params[:band_name].gsub(/[^0-9a-z]/i, '_')+"-"+params[:shirt_name].gsub(/[^0-9a-z]/i, '_')+"-"+"#{Time.now.to_i}",
                                     :discard_original_filename => true)

知道是什么导致了这个错误吗?

这些信息够吗?如果您需要更多,请让我知道您需要什么。任何帮助都会非常有帮助。我充其量只是一个黑客程序员,只是在摸索自己的方式。谢谢!

【问题讨论】:

  • params[:original_image]nilnil 的其他内容会引发不同的错误(“nil:NilClass 的未定义方法 'gsub'”)。但如果您想确定,请检查 params 包含的内容。
  • 第一个提示:将其拆分为多行。这很难阅读。
  • 你有什么问题?

标签: ruby-on-rails ruby


【解决方案1】:

正如 cmets 中所述,您很可能在 params[:band_name]params[:shirt_name] 中有一个 nil - 您将永远无法保证它们存在,并且当它们为 nil 时,您不能对它们调用字符串方法,所以你需要先检查它们。例如尝试这样的事情:

# do something better than raising an exception
raise "no band_name" if params[:band_name].blank?
raise "no shirt name" if params[:shirt_name].blank?

# better to put complicated things into variables rather than have a really long unreadable line
band_name = params[:band_name].gsub(/[^0-9a-z]/i, '_')
shirt_name = params[:shirt_name].gsub(/[^0-9a-z]/i, '_')
public_id = "#{band_name}-#{shirt_name}-#{Time.now.to_i}"

original_cloudinary = Cloudinary::Uploader.upload(params[:original_image],
                                 :public_id => public_id,
                                 :discard_original_filename => true)

【讨论】:

  • 谢谢。说得通。我现在正在等待导致此错误的人再次对其进行测试。无论我尝试什么,我都无法最终复制错误 - 即使将内容留空也不会重新创建错误。我只是按照他的话和日志行事。
  • 如 cmets 中所述,如果您在 params[:band_name]params[:shirt_name] 中有 nil,您将不会收到 OP 收到的消息。但是,params[:original_image] 并没有得到对其调用的方法,并且可以想象通过Cloudinary 访问它会引发 OP 的错误。
  • 问题显然出在params[:original_image] 上。将代码分成多行有助于在日志中识别这一点,所以谢谢!尽管问题仍然存在。该应用程序将图像上传到 Cloudinary。 params[:original_image] 是图像文件。 OP 正在上传图片文件(表单中必填,否则不能点击提交)他说他在不同的浏览器等中尝试了无数次......
  • 他给我发了他正在使用的图像文件,它对我有用,该应用每天上传数十次...没问题...我不知所措...我来了这里很可能是代码问题,但我认为这是他的网络问题或我的应用程序中的内存问题。将继续调查。
猜你喜欢
  • 2019-02-26
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多