我完全不熟悉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?我该如何解决这个问题?
答案 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;