Не удалось отправить параметры запроса. Механизировать 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'},
})
Другие вопросы по тегам