我正在使用 Pow 和 Nginx 为开发中的 Rails 4 应用程序提供服务。一个简单的文件上传返回 500 错误并且请求没有到达 Rails 控制器。我认为是这种情况,因为 Rails 日志中没有提到请求。没有提及错误,我不确定这里出了什么问题。
我从上传 Ajax 文件开始,但用一个同样不起作用的简单表单替换了它。
试过这个
然后去了这个
当前头像.html.erb
<%= form_for @user, html: { multipart: true }, method: "post", url: '/settings/avatar/update', class: "", id: "update_avatar" do |f| %>
<%= f.file_field :avatar, class: 'js-upload-photo-button js-change-avatar-btn', accept: 'image/png,image/gif,image/jpeg,image/jpg' %>
<%= f.submit "Upload" %>
<% end %>
Chrome 中的请求标头
扩展的请求标头部分
nginx.log
127.0.0.1 - - [01/Feb/2014:11:28:26 +0530] "POST /settings/avatar/update HTTP/1.1" 500 643 "https://allotrop.dev/settings/avatar" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
pow access.log
[Sat Feb 01 2014 11:28:26 GMT+0530 (IST)] INFO [127.0.0.1] GET allotrop.dev /500.html
这里还有其他关于 Rails 返回 500 错误而日志中未提及的问题rails 500 error no production log entry ,Rails 3.2.13, 500 error in development with no log 以及如何正确诊断 500 错误(Rails、Passenger、Nginx、 Postgres)
但这些都是一次性错误,似乎与我面临的问题无关。如果有人能指出我正确的方向,那就太好了。
更新 1
来自 routes.rb 的相关行
post '/settings/avatar/update', to: 'settings#update_avatar'
更新 2
找到我的 nginx 错误日志。顺便说一句,如果您使用的是 Homebrew,它位于/usr/local/Cellar/nginx/1.4.0/logs/error.log
nginx/error.log
2014/02/01 13:05:54 [crit] 8787#0: *85813 open() "/usr/local/var/run/nginx/client_body_temp/0000000010" failed (13: Permission denied), client: 127.0.0.1, server: *.dev, request: "POST /settings/avatar/update HTTP/1.1", host: "allotrop.dev", referrer: "https://allotrop.dev/settings/avatar"