通过rails中的logger显示表单对象的属性

时间:2014-07-31 07:48:29

标签: ruby-on-rails ruby

我想调试我的应用程序并通过logger检查我的控制器类中的表单对象上提交的值是什么?怎么做到呢?有没有更好的实践来调试rails应用程序?

2 个答案:

答案 0 :(得分:1)

您的rails日志(例如log/development.log)应该已经在" Parameters"中显示了表单提交的所有内容。它看起来像这样:

Processing MusicServiceAdmin::UsersController#edit (for 127.0.0.1 at 2014-07-31 10:34:16) [GET]
  Session ID: 3c0cfbe7ff23f8f718f6626748a4a
  Parameters: {"id"=>"35363"}

答案 1 :(得分:0)

<强> PARAMS

使用console跟踪Rails中的每个请求 - 您应该检查从那里传来的params

Started POST "/admin/login" for 127.0.0.1 at 2014-04-26 16:25:34 +0100
Processing by Admin::Users::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"+I1TKfc1YDuil7EI1frrFIoerNg5uonB1CIiujJO0jo=", "user"=>{"email"=>"*********", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign In"}
  [1m[36mUser Load (482.0ms)[0m  [1mSELECT  `users`.* FROM `users`  WHERE `users`.`email` = 'rpeck@frontlineutilities.co.uk'  ORDER BY `users`.`id` ASC LIMIT 1[0m
  [1m[35m (435.0ms)[0m  BEGIN
  [1m[36mSQL (439.0ms)[0m  [1mUPDATE `users` SET `current_sign_in_at` = '2014-04-26 15:25:35', `last_sign_in_at` = '2014-04-04 12:08:45', `sign_in_count` = 51, `updated_at` = '2014-04-26 15:25:36' WHERE `users`.`id` = 2[0m
  [1m[35m (448.0ms)[0m  COMMIT
  [1m[36mOption Load (404.0ms)[0m  [1mSELECT  `options`.* FROM `options`  WHERE `options`.`name` = 'site_robots' LIMIT 1[0m
  [1m[35mOption Load (357.0ms)[0m  SELECT  `options`.* FROM `options`  WHERE `options`.`name` = 'site_title' LIMIT 1
  [1m[36mOption Load (428.0ms)[0m  [1mSELECT  `options`.* FROM `options`  WHERE `options`.`name` = 'site_description' LIMIT 1[0m
Redirected to http://lvh.me:3000/****
Completed 302 Found in 3165ms (ActiveRecord: 2993.2ms)

如果你想&#34; debug&#34;,你只需要检查在控制台中呈现的各种参数/动作。或者,您可能还希望对特定数据使用Rails.logger.info方法:

#app/controllers/your_controller.rb
Class YourController < ApplicationController
   def index
      Rails.logger.info("Test")
   end
end