在Ruby on Rails 2.3.2中,如何在创建动作期间打印出params?

时间:2009-05-24 05:37:13

标签: ruby-on-rails

有一个脚手架创建的故事......并且在创建动作中有

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

我对params中的内容感到好奇......所以我想要删除params ...但是没有与create action相关的视图......有没有办法将其内容转储出去?有没有办法在我的代码中转储POST变量? (看看下层发生了什么)

6 个答案:

答案 0 :(得分:21)

最简单的方法就是将params转储到日志中:

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"}

答案 1 :(得分:2)

现在我更了解Rails,你也可以简单地使用

p params
在代码中

并查看控制台的输出(控制台上显示的日志)

答案 2 :(得分:1)

如果你在Mac上,Spike是一个很棒的应用程序,它可以分析日志文件,并且可以让你检查params以获取请求等。

答案 3 :(得分:1)

在Windows上使用Fiddler,显示

HTTP行#1是:

POST /stories HTTP/1.1

这是POST内容:

  

authenticity_token = 62iw%2BrsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo%3D&安培;故事%5Bname%5D =谷歌+主+网站&安培;故事%5Blink%5D = www.google.com&安培;提交=创建

列在表格中:

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

,服务器日志为:

  

参数:{“commit”=>“创建”,“故事”=> {“名称”=>“Google主网站”,“链接”=>“www.google.com”}, “authenticity_token”=> “中62iw + rsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo =”}

答案 4 :(得分:1)

除了查看日志之外,您不需要任何其他内容(它们位于/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这样你就可以用符号来访问它。

答案 5 :(得分:0)

如果您使用的是* NIX系统(包括OS X),请打开一个新的终端窗口/选项卡,然后键入以下命令:

tail -f log / development.log

您将获得持续的请求流 - 包括params - 以及由此产生的数据库操作。对于开发/调试非常宝贵,IMO。