【问题标题】:Following a Typhoeus post in Rails/Sinatra在 Rails/Sinatra 上的 Typhoeus 帖子之后
【发布时间】:2012-12-29 13:13:52
【问题描述】:

我有一个场景,我正在通过 app.rb 中的 Typhoeus 在 Sinatra 中发帖。它看起来像这样:

post "/send-data" do
  ...
  request = Typhoeus::Request.new("http://localhost:4000/renders",
                              :method         => :post,
                              :headers        => { :Accept => "text/html" },
                              :followlocation => true,
                              :timeout        => 100, # milliseconds
                              :params         => params )

  # Run the request via Hydra.
  hydra = Typhoeus::Hydra.new
  hydra.queue(request)
  hydra.run
  ...
end

当我成功发布到 'send-data' Typhoeus 时,它会发布并将用户推送到创建记录的视图 (http://localhost:4000/renders/34634646464),这是一个 Rails 应用程序。

问题是用户永远不会被重定向到 /send-data,因此如果您刷新页面,它会尝试再次发布。我想这是有道理的,但我确实需要将用户重定向到记录的最终(url)位置。换句话说,可以看到新记录,但这种重定向方法实际上并没有将用户移出 sinatra 应用程序。

处理此问题的最佳方法是什么?我唯一能想到的就是不使用“followlocation”,而是让 /send-data 控制器操作在从 Typhoeus 获得响应位置后进行重定向。

【问题讨论】:

    标签: ruby-on-rails http sinatra typhoeus


    【解决方案1】:

    我尝试了我的建议,它奏效了……而且看起来还不错。

    request = Typhoeus::Request.new("http://localhost:4000/renders.json",
                                :method         => :post,
                                :headers        => { :Accept => "json" },
                                :timeout        => 100, # milliseconds
                                :params         => params )
    
    hydra = Typhoeus::Hydra.new
    hydra.queue(request)
    hydra.run
    
    response = request.response
    redirect response.headers_hash['Location']
    

    我确实必须对我的 Rails 服务器进行更改。 rails create 操作以 json 响应,'Location' 是它的返回值。 “位置”是新创建的记录所在的位置。然后我只做一个 Sinatra 重定向,它将重定向到 rails 应用程序上的新记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多