Rails:如何遍历request.headers

时间:2015-06-24 12:56:41

标签: ruby-on-rails-4

如何循环浏览request.headers

在视图中使用each循环播放并不起作用。我也尝试了to_hash方法也失败了。

我一直试图做的例子

以JSON格式查看哈希

对于echo动作,我有一个jbuilder模板,我想在其中打印所有请求标题:

json.request_headers request.headers

这给了我:ActionView::Template::Error (not opened for reading)。对于params哈希,同样的工作完美无瑕。

记录键和值

然后,在回声控制器中我这样做了:

incr=0
request.headers.each do |key, value|
    logger.debug "Header #{ incr }: #{ key }, #{ value }"
    incr += 1
end

它为我提供了一些HTTP标头,但也提供了一些机架和action_dispatch信息,例如Header 17: rack.version, [1, 3]Header 32: action_dispatch.parameter_filter, [:password],我对此并不感兴趣,我猜错了(文件没有打开)阅读)。

附加问题

另外,在我的搜索中,我无法找到任何暗示request.headers是什么(某种物体?)。有什么简单的方法来解决它?

2 个答案:

答案 0 :(得分:2)

所有标准和自定义标头都以HTTP开头。这对我有用:

request.headers.each {|key,value| 
  logger.debug "#{key}='#{value}'" if key.start_with? "HTTP"
}

答案 1 :(得分:0)

response.headers 是一个哈希。您可以阅读有关回复here的更多信息。由于它是一个哈希,它应该回复.each,如果没有,你应该用你得到的错误更新你的问题。

另外,请注意,您始终可以在对象上调用.class来查找其类型。