Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Rails为HEAD请求呈现模板?_Ruby On Rails - Fatal编程技术网

Ruby on rails 为什么Rails为HEAD请求呈现模板?

Ruby on rails 为什么Rails为HEAD请求呈现模板?,ruby-on-rails,Ruby On Rails,对于HEAD请求,Rails似乎执行所有常规步骤,包括呈现模板,然后丢弃相应的输出(返回一个空响应) 我想不出在HEAD请求的情况下呈现模板有什么意义(除非您在模板中执行了一些实际的业务逻辑,但这种情况永远不会发生) 所以我的问题是:你同意我的观点吗?还是有我没有预见到的可能的副作用 我问这个问题的原因是因为我正在考虑提交一个Rails问题,并可能提交一个功能的拉取请求,该功能将对HEAD请求禁用默认(非显式)模板呈现。但是,我并不完全同意 对于每个http动词,我们都需要手动编写代码来处理。头

对于HEAD请求,Rails似乎执行所有常规步骤,包括呈现模板,然后丢弃相应的输出(返回一个空响应)

我想不出在HEAD请求的情况下呈现模板有什么意义(除非您在模板中执行了一些实际的业务逻辑,但这种情况永远不会发生)

所以我的问题是:你同意我的观点吗?还是有我没有预见到的可能的副作用


我问这个问题的原因是因为我正在考虑提交一个Rails问题,并可能提交一个功能的拉取请求,该功能将对HEAD请求禁用默认(非显式)模板呈现。

但是,我并不完全同意

对于每个http动词,我们都需要手动编写代码来处理。头上也有类似的东西。HEAD请求将遵循GET请求的执行方式,除非我们不处理它

例如:

def index
  if request.head?
    head :created
  else
    # handle GET request
    Rails.logger.info "Derp #{request.method}"
  end
end

你是对的,但是已经有一个隐含的区别:响应是空的。我认为这可能是通过机架中间件实现的?是的,这是一个很好的补充,但是Rails提供了处理动词的自由。即使使用GET请求,您也可以创建记录。您可以从POST方法返回对象(可以是json),而它可以是
201/ok
。动词只是数据通过HTTP传输的一种方式。只是我的意见。:)我同意你。。。但我对
内容长度有疑问。我不知道头部设置为0是否正确。如果必须计算,则需要渲染实体。更新: