![](/img/trans.png)
[英]Ruby On Rails: how to extract nested parameters from POST request
[英]Rails POST doesnt extract any path, query or request parameters
我想授予用户从其站点访问我的API(托管在heroku.com上)的权限。 但是,当我希望他们允许发布到api时,会发生一个奇怪的问题:
从具有正确的动作URL的正确形式发送的数据(例如“ http://myapp.com/projects/123/tasks/321/todos”)-参数被序列化并通过jQuery发送-我遇到“ ActionController: :MethodNotAllowed“,以及附加信息:”仅允许获取和发布请求“,它使用:method =>:options重新路由到ApplicationController#index。
Rails不会从URL中提取project_id(123)和task_id(321)的参数,其他任何request_parameters,path_parameters或query_parameters都不可用。
当我从外部站点进行发布时,会发生这种情况,但是,当从本地计算机上的html页面进行发布时,则不会发生。 我最初的想法是关于错误的编码,但是如何解决该问题。
编辑:我正在使用authlogic(不是devise :-D),对于:create动作,protect_from_forgery已经被跳过。
任何建议表示赞赏
由于跨域策略而发生了问题-该请求是从另一个域发出的-并且由于我使用的是支持CORS的最新浏览器,因此它首先发送OPTIONS请求以从服务器获知,该操作允许此域。
我想发生这种情况是因为Rails试图保护您的CSRF攻击形式。
您可以注释掉ApplicationController中的protect_from_forgery
行以对其进行测试。
但我不确定这是否是在生产环境中解决此问题的正确方法。
好的。 这次,我将尝试回答正确的问题(请参阅其他评论)。
所以我已经考虑过了,我想知道,这是jQuery调用尝试PUT请求的情况吗? 当您使用本地表单时,Rails会发布数据,但会添加额外的_method
字段来模拟PUT。
不知道您是否正在使用jquery-rails ,但这会在您的AJAX调用中为您设置_method参数以及PUT / POST动词转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.