【问题标题】:How to submit formstack form using ruby?如何使用 ruby​​ 提交 formstack 表单?
【发布时间】:2012-04-11 07:26:03
【问题描述】:

我有一个类似于THIS 的表单,并希望使用 ruby​​ 从 CSV 文件向它提交数据。这是我一直在尝试做的事情:

require 'uri'
require 'net/http'

params = {
      'field15157482-first'   => 'bip',
      'field15157482-last'    => 'bop',
      'field15157485'         => 'bip@bob.com',
      'field15157487'         => 'option1'
      'fsSubmitButton1196962' => 'Submit'
}

x = Net::HTTP.post_form(URI.parse('http://www.formstack.com/forms/?1196833-GxMTxR20GK'), params)

我不断收到A valid form ID was not supplied. 我有预感我使用了错误的 URL,但我不知道用什么来替换它。 我会使用 API,但我无权访问令牌,因此我采用了石器时代的方法。任何建议将不胜感激。

【问题讨论】:

    标签: ruby uri net-http formstack


    【解决方案1】:

    查看http://www.formstack.com/forms/?1196833-GxMTxR20GK 上的源代码和链接中的示例,看来 formstack 表单发布到 index.php,并且需要传入表单 ID 以识别正在提交的表单。查看在这两个示例中的表单中,您会看到与此类似的字段:

    <input type="hidden" name="form" value="1196833" />
    

    尝试将以下内容添加到您的参数哈希中:

    'form' => '1196883' # or other appropriate form value
    

    您可能还需要包含其他隐藏字段才能有效提交。

    【讨论】:

      【解决方案2】:

      表单使用隐藏变量和 cookie 来尝试维护“唯一会话”。幸运的是,Mechanize 让处理“偷偷摸摸”的表单变得非常容易。

      require "mechanize"
      form_uri = "http://www.formstack.com/forms/?1196962-617Z6Foyif"
      
      @agent = Mechanize.new
      page = @agent.get form_uri
      
      form = page.forms[0]
      
      form.fields_with(:class => /fsField/).each do |field|
        field.value = case field.name
                        when /first/ then "First Name"
                        when /last/ then "Last Name"
                        else "email@address.com" 
                      end
      end
      
      page = form.submit form.buttons.first
      
      puts
      puts "=== Response Header"
      puts
      puts page.header
      puts
      puts "=== Response Body"
      puts
      puts page.body
      

      【讨论】:

      • 我以前从未听说过机械化,这很棒!
      猜你喜欢
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2016-03-21
      • 2012-04-08
      • 2015-04-14
      • 2012-03-04
      • 2012-11-26
      • 2016-04-07
      相关资源
      最近更新 更多