в Ruby on Rails 2.3.2, как распечатать параметры во время действия создания? - PullRequest
12 голосов
/ 24 мая 2009

есть эшафот, созданный Story ... и в действии create есть

@story = Story.new(params[:story])

Мне было любопытно, что находится в параметрах ... поэтому я хочу сбросить параметры ... но нет представления, связанного с действием создания ... есть ли способ выгрузить его содержимое? Есть ли способ сбросить переменные POST в моем коде тоже? (чтобы увидеть, что происходит на нижнем уровне)

Ответы [ 6 ]

21 голосов
/ 24 мая 2009

Самое простое, что нужно сделать, это просто сбросить параметры в журнал:

Rails.logger.info("PARAMS: #{params.inspect}")

Если вы находитесь в режиме разработки, просто загляните в ваш файл development.log, и эта строка будет там.

Область действия params представляет собой комбинацию полей URL / FORM (GET / POST), и она будет распечатана в журнале как часть обычной обработки вывода, поэтому вам может не потребоваться ее собственный дамп - любая разработка или производственный журнал содержит дамп параметров в верхней части строки журнала, например

Processing Clients::ClientsController#show (for x.x.x. at 2009-05-24 00:34:26) [GET]
  Parameters: {"id"=>"303", "user_id"=>"2"}
2 голосов
/ 05 апреля 2011

Теперь я знаю Rails больше, вы также можете просто использовать

p params

в вашем коде и посмотрите на вывод консоли (журнал показывается на консоли)

1 голос
/ 24 мая 2009

Вам ничего не нужно, кроме как заглянуть в ваши логи (они живут в /log). Если вы не возитесь с чем-то, регистрация параметров включена по умолчанию во всех журналах.

Processing PostsController#create (for 127.0.0.1 at 2009-05-24 13:03:24) [POST]
  Parameters: {"commit"=>"Create", "authenticity_token"=>"2G6BKOs8xNAaXiToVf4r1ko8QZzP9QAomi2PHVQC5Oc=", "story"=>{"something"=>"asdfafd"}}

Parameters перечисляет все параметры, а хэш, следующий за "story", эквивалентен params[:story] (все поступает на сервер в виде строк, и Rails превращает его в HashWithIndifferentAccess, чтобы вы могли получить к нему доступ с помощью символ).

1 голос
/ 24 мая 2009

При использовании Fiddler в Windows оно отображается

строка HTTP # 1:

POST /stories HTTP/1.1

это содержание POST:

authenticity_token = 62iw% 2BrsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo% 3D и история% 5Bname% 5D = Google + Главная + Сайт и история% 5Blink% 5D = www.google.com и фиксации = Создать

указано в таблице:

authenticity_token  62iw+rsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo=
story[name]         Google Main Site
story[link]         www.google.com
commit              Create

и журнал сервера:

Параметры: {"commit" => "Создать", "story" => {"name" => "Главный сайт Google", "link" => "www.google.com"}, "authenticity_token" = > "62iw + rsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo ="}

1 голос
/ 24 мая 2009

Если вы работаете на Mac, Spike - отличное небольшое приложение, которое анализирует файлы журналов и позволит вам, среди прочего, проверять параметры для запросов.

0 голосов
/ 12 сентября 2009

Если вы работаете в системе * NIX (включая OS X), откройте новое окно / вкладку терминала и введите следующую команду:

tail -f log / development.log

Вы получите постоянный поток поступающих запросов, включая параметры, и соответствующие действия с БД. Не имеет значения для разработки / отладки, IMO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...