В Ruby on Rails 2.3.2, как распечатать параметры во время действия создания?

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

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

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

Ответ 1

Самый простой способ - просто сбросить параметры в журнал:

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

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

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

Processing Clients::ClientsController#show (for x.x.x. at 2009-05-24 00:34:26) [GET]
  Parameters: {"id"=>"303", "user_id"=>"2"}

Ответ 2

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

p params

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

Ответ 3

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

Ответ 4

Используя Fiddler в Windows, он отображается

строка HTTP # 1:

POST /stories HTTP/1.1

это содержимое POST:

authenticity_token = 62iw% 2BrsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo% 3D & история% 5Bname% 5D = Google + Main + Site & история% 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 =" }

Ответ 5

Вам не нужно ничего, кроме просмотра в ваших журналах (они живут в /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, чтобы вы могли получить к нему доступ с помощью символ).

Ответ 6

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

tail -f log/development.log

Вы получите постоянный поток входящих запросов - включая параметры - и результирующие действия DB. Бесценный для разработки/отладки, ИМО.