有一个脚手架创建的故事......并且在创建动作中有
@story = Story.new(params[:story])
我对params中的内容感到好奇......所以我想要删除params ...但是没有与create action相关的视图......有没有办法将其内容转储出去?有没有办法在我的代码中转储POST变量? (看看下层发生了什么)
答案 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。