В 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. Бесценный для разработки/отладки, ИМО.