@ s3_direct_post.fields:没有将nil隐式转换为String

时间:2015-11-12 15:37:25

标签: ruby-on-rails ruby

我完全不熟悉Ruby和Rails,并且在本教程中遇到了困难。 https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails

我得到的错误是当我导航到http://localhost:3000/users/new时,如下所示。

  

用户中的TypeError#new

     

显示/home/tomt/myapp/app/views/users/_form.html.erb其中第1行   提出:

     

没有将nil隐式转换为String Extracted source(around   第1行):<%= form_for(@ user,html:{class:' directUpload',data:{   '形状数据' => (@ s3_direct_post.fields),' url' => @ s3_direct_post.url,   '主机' => URI.parse(@ s3_direct_post.url).host}})do | f | %GT;

我认为这个问题是由@ s3_direct_post.fields造成的,因为如果我将其替换为' form-data' => (Hash.new)然后页面加载。但是,这不是一个有效的修复程序。为什么@ s3_direct_post.fields nill?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我终于搞清楚了,在我的aws.rb中我使用的是AWS_ACCESS_KEY_ID但是在我的实际环境中,我将其定义为缺少_ID的AWS_ACCESS_KEY。

错误Rails给了我 - 在下面 - 给了我一个完全的野鹅追逐。在我多次重复阅读教程后,我才找到了真正的原因。

  

没有将nil隐式转换为String Extracted source(around   第1行):<%= form_for(@ user,html:{class:'directUpload',data:{   'form-data'=> (@ s3_direct_post.fields),'url'=> @ s3_direct_post.url,   'host'=> URI.parse(@ s3_direct_post.url).host}})do | f | %GT;

好吧,这是一个很好的教训,也许我的经验将来会帮助别人。