Tyl*_*ler 12 ruby-on-rails localhost http-status-code-405 ruby-on-rails-4
我的Rails localhost服务器出现问题,所有Post调用都开始返回405方法不允许.但是我们的登台和生产服务器没有问题.它发生在代码的所有分支上,甚至是那些尚未更新的代码.调试时,我看到它到达路由文件而不是控制器.
我尝试删除我的宝石并重新安装,从WEBrick切换到Pama,创建我的git项目的新克隆.
服务器
Started POST "/assets" for ::1 at 2015-07-14 12:14:27 -0400
Run Code Online (Sandbox Code Playgroud)
Chrome中的网络标签
一般
Remote Address:[::1]:3000
Request URL:http://localhost:3000/assets
Request Method:POST
Status Code:405 Method Not Allowed
Run Code Online (Sandbox Code Playgroud)
响应
HTTP/1.1 405 Method Not Allowed
Cache-Control:no-cache
Content-Length:18
Content-Type:text/plain
X-Request-Id:9b0b2dd2-065b-4610-91c9-36494ea95353
X-Runtime:0.145368
Run Code Online (Sandbox Code Playgroud)
请求
POST /assets HTTP/1.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:8376627
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryx8y8PBySdt7dxs4A
Cookie:activeAccordionGroup=collapseTwo; _fusion360_hub_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJWFlYmVlOGZjZmI3YzVlYjBjNjAyYzcyMzNhNzIyMzIwBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMTllM2xhK1k4WG1hd2xYNnZCOEtHOEhPaHNTbWQvZGR2cGJ3bU9WUXIwRzg9BjsARg%3D%3D--4e108cb5f6eca3d986c0b3accec07bd2c27560b2; _mkto_trk=id:760-CWR-293&token:_mch-localhost-1435859445290-79614; _pk_id.845225.1fff=9847e7981c291a08.1435859445.1.1435859445.1435859445.; _allegorithmic-substance-marketplace_session=M3dMUCs4ZEtWSTFJTFVHV2VYN2pESFdHcGlHL2grVVVKSGxIWEZ3MlhXQkpRdHE2L0ZkMFpURmZDWGl6aTMxYSttMXFSQXN2M08zVVVXZTRHMDNKOHJOUzA1TmZoYnMwWURjb3c0Rkx6MTJYOW1Uem9aNGRObEMvc1NpSWo5VnQ4dUIzRnRtTFpnMlpOQVVZUU1SdWxiN1ZjN1lIMVd3Sk5jaXkyZkZLZ3duWTc4K2dnK0FSK29JVWdva2t0eUN1Q3hJbjFERHJVaGtndjVoWGxDRUlndz09LS1rZDdWcmtEWHlJWHRpZjc1MFNUSDF3PT0%3D--d34962721f449064dfdfd4629c0239ea1340aee4; __profilin=p%3Dt
Host:localhost:3000
Origin:http://localhost:3000
Pragma:no-cache
Referer:http://localhost:3000/assets/new
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
Jag*_*ngh 35
你有一个路由"资产",它是Rails中的一个保留路由,它保留给Rails Asset Pipeline.
如果必须使用"assets"路由,则需要通过在development.rb或production.rb配置块中添加以下行来为Asset Pipeline提供另一个挂载点:
config.assets.prefix = '/assetz'
Run Code Online (Sandbox Code Playgroud)
然后重新启动服务器.
这样,您的所有资产都将挂载在"/ assetz"上,您就可以在"/ assets"上使用POST请求.
快乐的编码!
参考:
您可以发布您的路线文件以及您的开发环境和生产服务器的确切 Rails 版本吗?
我假设当您发布到仅注册为 get 请求的路线(取决于您的 Rails 版本)或可能定义两次的路线时,可能会发生这种情况,例如:
resources :photos, :only => [:index]
get :photos
Run Code Online (Sandbox Code Playgroud)