4
  get '/test' do
     session[:my_session_id] = generate_random_id()
     puts 'begin haml debug'
     haml :"static/haml_page", :locals=>{:session_id => session[:my_session_id]}
  end

我在日志中看到上面的页面经常被调用两次:

begin haml debug
127.0.0.1 - - [02/Nov/2012 00:00:01] "GET / HTTP/1.1" 200 4317 1.5421
127.0.0.1 - - [02/Nov/2012 00:00:01] "GET /js/base/jquery.pjax.002902.js HTTP/1.1" 304 - 0.0234
[2012-11-02 00:00:01] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
127.0.0.1 - - [02/Nov/2012 00:00:01] "GET /css/docs.002902.css HTTP/1.1" 200 165 0.1086
.................................
begin haml debug
127.0.0.1 - - [02/Nov/2012 00:00:04] "GET / HTTP/1.1" 200 4317 1.9288

这让我有一些问题。为什么会这样?

4

2 回答 2

2

由于类似的问题,我已移至 Webrick 安装的 Puma 服务器。不幸的是,我丢失了这个问题的示例代码。无论如何,如果您遇到此类问题,请了解 brouser 的功能:

  1. 开发人员工具 > 网络(选项卡)将显示请求的确切来源(如果存在)
  2. 尝试通过减少代码来缩小此问题/错误,即注释所有 JavaScript,将页面内容更改为“Hello Wold”并观察问题仍然存在
  3. 分享你的代码:)

抱歉在这里发帖,我不知道如何将其发布为您的问题的补充。

于 2012-11-04T15:38:40.327 回答
0

这是一个 hack,但如果你真的需要让它只运行一次代码:创建一个全局布尔变量。在路线中,将所有内容包装在布尔值的条件中。如果为假,请将其设置为真,运行您的代码,然后再次将其设置为假。

于 2017-03-16T13:54:03.073 回答