识别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中设置的。