Не удалось отправить параметры запроса. Механизировать 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)
Когда я проверяю запрос на моем сервере рельсов, я получаю
Parameters: {}
Я пытаюсь отправить массивы в этом запросе почты. category_ids и property_value_ids
3 ответа
Я не пользуюсь Mechanize
, но я думаю, что вы должны добавить свои параметры следующим образом:
agent.post(post_design_url, {
"authenticity_token" => "lXewdcVQRHZb+O9gVZ+E0xG9Mtg2rnTznkEN/wVk2a4=",
"design[design_code]" => "xyz",
"design[price]" => "600"
})
Я считаю, что проблема, с которой вы столкнулись, находится в самом начале параметров вашего запроса.
Я считаю, что вы должны добавить кавычки вокруг строки и экранировать свой токен аутентификации:
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, вероятно, было.
В дополнение к ответу @Sir l33tname вы можете использовать следующий формат
agent.post(post_design_url, {
:param1 => 'one',
:nested => {:param2 => 'two'},
})