Ruby on rails TypeError(没有将nil隐式转换为字符串):

Ruby on rails TypeError(没有将nil隐式转换为字符串):,ruby-on-rails,ruby,Ruby On Rails,Ruby,日志表明错误在我的一个控制器的此行中 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, '_')+"-"+"#{

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

    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)
你知道是什么导致了这个错误吗


这些信息够了吗?如果你需要更多,请让我知道你需要什么。任何帮助都会很有帮助。我充其量只是一个黑客程序员,只是在摸索着解决这个问题。谢谢

如评论中所述,您很可能在
参数[:band_name]
参数[:shirt_name]
中有一个nil-您永远无法保证这些参数存在,并且当它们为nil时,您无法对其调用string方法,因此您需要首先检查它们。试着这样做:

# 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)

我猜
params[:original_image]
nil
;其他事物为
nil
将引发不同的错误(“nil:NilClass的未定义方法'gsub')。但如果您想确定,请检查
params
包含的内容。第一个提示:将其拆分为多行。这很难读。你的问题是什么?谢谢。有道理。我现在正在等待导致此错误的一个人再次测试它。无论我做了什么尝试,我都无法在自己身上复制错误-即使留白也不会重新创建错误。我只是根据他的话和日志。如评论中所述,如果你在
params[:band\u name]
params[:shirt\u name]
中有
nil
,你就不会得到OP得到的消息。但是,
params[:original_image]
没有在其上调用方法,可以想象,通过
Cloudinary
访问它会引发OP的错误。问题显然是
params[:original_image]
的问题。将代码分成多行有助于在日志中识别这一点,所以谢谢!尽管问题仍然存在。该应用程序将图像上传到Cloudinary
params[:original_image]
是图像文件。OP正在上传一个图像文件(这是表单中必需的,否则你不能点击提交),他说他在不同的浏览器中尝试了很多次,等等。他给我发了他正在使用的图像文件,它对我有效,该应用程序一天可以上传几十次…没有问题。。。我不知所措。。。我来到这里的机会很奇怪,这是一个代码问题,但我认为这是他那边的网络问题,或者是我应用程序中的内存问题。我们会继续调查。