无法发送查询参数Mechanize Ruby

时间:2014-05-15 07:07:34

标签: ruby-on-rails ruby mechanize-ruby

我正在尝试将这些参数作为字符串

发送
abc = authenticity_token=lXewdcVQRHZb+O9gVZ+E0xG9Mtg2rnTznkEN/wVk2a4=&design[design_code]=xyz&&design[price]=600&design[discount_percent]=10&design[category_ids]=148&design[property_value_ids]=250&design[property_value_ids]=285&design[property_value_ids]=499&design[image_ids]=208133&

post_design_url = 'some url'

agent = Mechanize.new

agent.user_agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ru-ru) AppleWebKit/533.2+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10"

agent.post(post_design_url, abc)

当我在我的rails服务器上检出请求时,我正在

Parameters: {}

我正在尝试在此帖子请求中发送数组。 category_ids和property_value_ids

3 个答案:

答案 0 :(得分:1)

我不使用Mechanize,但我认为你应该像这样添加你的参数:

agent.post(post_design_url, {
    "authenticity_token" => "lXewdcVQRHZb+O9gVZ+E0xG9Mtg2rnTznkEN/wVk2a4=",
    "design[design_code]" => "xyz",
    "design[price]" => "600"
})

答案 1 :(得分:0)

除了 @Sir l33tname ,您还可以使用以下格式

agent.post(post_design_url, {
  :param1 => 'one', 
  :nested => {:param2 => 'two'},
})

答案 2 :(得分:0)

我相信您遇到的问题就在查询参数的开头。

我相信你应该在字符串周围添加引号,并转义你的身份验证令牌:

require 'cgi'

abc = "authenticity_token=#{CGI::escape('lXewdcVQRHZb+O9gVZ+E0xG9Mtg2rnTznkEN/wVk2a4=')}&design[design_code]=xyz&&design[price]=600&design[discount_percent]=10&design[category_ids]=148&design[property_value_ids]=250&design[property_value_ids]=285&design[property_value_ids]=499&design[image_ids]=208133&"

我之前很确定,如果你的完整字符串周围的引号没有得到你,那么你在authenticity_token结尾处的=可能是。