解决了Rails的ActionController::MethodNotAllowed问题
来源:互联网 发布:unity3d能建模吗 编辑:程序博客网 时间:2024/04/28 04:06
原创文章,版权归 胡添发(hutianfa@163.com)所有,转载请注明出处:
http://blog.csdn.net/aidisheng/archive/2008/09/10/2911052.aspx
昨天研究Rails中使用Extjs的Desktop的例子,官方给的例子都是使用php做服务端,把php翻译成Rails并不难,而且,使用Rails来写,代码量只是php的十分之一左右(当然,并不能简单的一句一句翻译,需要修改一些数据库的设计)。过程中遇到的第一个问题是:在登录界面处理中出现了下面的异常:
ActionController::MethodNotAllowed (Only get, put, and delete requests are allowed.):
一开始以为可能是因为Extjs使用的是js来发送请求时没有指定method参数,仔细检查过代码之后,并不是这样的问题,后来上网查了很久,大部分的信息都是英文的,而且都没有讲具体的解决办法。
以前我曾经也遇到过这样的问题,只是项目虽然使用SVN来管理了,但并没有太详细地记录解决的办法,这个教训真的以后要好好吸取了(当然,这也是现在要写成博客的重要原因)。下面是分析过程和解决办法:
首先要想办法获取客户端发送给服务端的数据--查看日志:
Processing ApplicationController#login (for 127.0.0.1 at 2008-09-09 23:06:59) [POST]
Session ID: BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo
SGFzaHsABjoKQHVzZWR7AA==--d50a249f3e193b1578c6f971b8e884437ff6caa7
Parameters: {"UserName"=>"demo", "action"=>"login", "Password"=>"demo"}
第一感觉到的问题是请求中(Parameters: {"UserName"=>"demo", "action"=>"login", "Password"=>"demo"})并没有controller的信息,于是,我再三检查了js代码,发现路径上明确是有的。看到http请求带有一个参数,我第一反应就是添加多一个controller的参数,添加之后,在服务器端是出现了controller的数据,但问题仍然存在。
后面还不断去研究别的例子中是怎么传递参数的,理解了之后,还是没有找到原因。回到家中吃完晚饭,我又一头扎进去了。功夫不负有心人,最后检查日志的时候,注意到了服务端处理该请求的并不是我写的那个controller,而是ApplicationController,它并没有login方法,出错是理所当然的了。
真正的原因是请求的url中,我没有写正确controller的名字,这样,服务器就默认交给了ApplicationController来处理了。修改了正确的名字之后,登录功能一切正常,桌面已经展现出来了。
后续还有其他的功能需要继续完成。
- 解决了Rails的ActionController::MethodNotAllowed问题
- rails firefox ActionController::InvalidAuthenticityToken
- Rails -- ActionController::InvalidAuthenticityToken解决办法
- Rails源代码分析(40):ActionController Base的render方法
- ActionController::InvalidAuthenticityToken解决途径
- post 调用restfull接口 解决出现的ActionController::InvalidAuthenticityToken错误
- Rails源代码分析(39):ActionController 对 ActionView 模块的调用
- Rails源代码分析(5):ActionController概览
- Rails源代码分析(6):ActionController::Flash
- Rails源代码分析(12):ActionController::Benchmarking
- Rails源代码分析(13):ActionController::Rescue
- Rails源代码分析(14):ActionController::MimeResponds
- Rails源代码分析(15):ActionController::Helpers
- Rails源代码分析(16):ActionController::Cookies
- Rails源代码分析(23):ActionController::Verification
- Rails源代码分析(24):ActionController::Streaming
- Rails源代码分析(25):ActionController::SessionManagement
- Rails源代码分析(27):ActionController::RecordIdentifier
- 在Tomcat中部署Java Web应用程序
- 普里姆算法.cpp
- Struts2+Spring2+Hibernate3 web应用示例(四)
- linux内核代码分析之asm.s
- i8253 count too high
- 解决了Rails的ActionController::MethodNotAllowed问题
- Better man
- 最短路径-一个顶点到各点(迪杰斯特拉算法)
- Struts2+Spring2+Hibernate3 web应用示例(五)
- 纯的js分页代码 - soleghost的专栏 - CSDNBlog
- 求任意两个顶点间的最短路径
- 爱情动作片《地心游记3D》
- 医院信息管理系统--顺序
- 医院信息管理系统-链式实现