识别Ruby on Rails中的GET和POST参数
时间:2020-03-06 14:55:02 来源:igfitidea点击:
从Ruby on Rails的控制器中识别并分离GET和POST参数的最简单方法是什么,这等效于PHP中的$ _GET和$ _POST变量?
解决方案
我们可以使用request.get?
和request.post?
方法来区分HTTP Gets和Posts。
- 参见http://api.rubyonrails.org/classes/ActionDispatch/Request.html
如果我们知道我的意思,我想我们想做的不是很"铁轨"。GET请求应该是幂等的,我们应该能够多次发出相同的GET请求,并且每次都能获得相同的结果。
我不知道Rails中有什么方便的方法,但是我们可以直接访问querystring来解析在那里设置的参数。类似于以下内容:
request.query_string.split(/&/).inject({}) do |hash, setting| key, val = setting.split(/=/) hash[key.to_sym] = val hash end
如果要检查请求的类型以防止在使用错误方法时执行任何操作,请注意,我们也可以在routes.rb文件中指定该请求:
map.connect '/posts/:post_id', :controller => 'posts', :action => 'update', :conditions => {:method => :post}
或者
map.resources :posts, :conditions => {:method => :post}
现在,仅当我们有效地发布信息时,才会调用PostsController的update方法。查看文档以获取资源。
我们无需知道控制器中的详细程度。路线和表单将导致将适当的项目添加到params哈希中。然后,在控制器中,我们只需访问说出params [:foo]
即可获取foo参数,并对其进行所需的操作。
GET和POST(以及PUT和DELETE)与控制器动作之间的映射是在大多数现代Rails代码的config / routes.rb
中设置的。