2009-05-24 15 views
11

có một giàn giáo tạo ra câu chuyện ... và trong tạo hành động, cótrong Ruby on Rails 2.3.2, cách in ra các tham số trong khi tạo một hành động?

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

tôi đã tò mò như những gì có trong params ... vì vậy tôi muốn để đổ ra params ... nhưng có không có chế độ xem nào được liên kết với hành động tạo ... có cách nào để loại bỏ nội dung của nó không? có cách nào để loại bỏ các biến POST trong mã của tôi không? (Để xem những gì đang xảy ra ở mức thấp hơn)

Trả lời

20

Điều dễ nhất để làm là chỉ cần đổ params ra vào nhật ký:

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

Nếu bạn đang ở chế độ phát triển, chỉ cần nhìn vào sự phát triển của bạn. đăng nhập và dòng đó sẽ ở đó.

Phạm vi params là sự kết hợp của các trường URL/MẪU (GET/POST), và nó sẽ được in ra trong nhật ký như là một phần của quá trình xử lý đầu ra bình thường, vì vậy bạn có thể không cần phải bán nó. nhật ký phát triển hoặc nhật ký sản xuất chứa các tham số kết xuất ở đầu dòng nhật ký, ví dụ

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

Đây có phải là không phụ thuộc vào log_level? –

+0

@willem obst - không, bạn nói đúng, thao tác này sẽ chỉ in ra khi mức nhật ký là thông tin hoặc thấp hơn. Bạn có thể sử dụng Rails.logger.debug để in nó ra trong cả hai phát triển hoặc sản xuất. –

1

Nếu bạn đang ở trên một máy Mac, Spike là một ứng dụng nhỏ lớn các phân tích file log và sẽ cho phép bạn kiểm tra params cho các yêu cầu, trong số những thứ khác.

1

Sử dụng Fiddler trên Windows, nó được hiển thị

dòng HTTP # 1 là:

POST /stories HTTP/1.1 

đây là nội dung POST:

authenticity_token = 62iw% 2BrsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo% 3D & story% 5Bname% 5D = Google + Trang chính + & câu chuyện% 5Blink% 5D = www.google.com & commit = Tạo

được liệt kê trong một bảng:

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

và nhật ký máy chủ là:

Tham số: { "cam kết" => "Create", "câu chuyện" => { "tên" => "Trang web của Google chính", "liên kết" => "www.google.com"}, "authenticity_token" => "62iw + rsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo ="}

1

Bạn không cần bất cứ điều gì ngoại trừ cái nhìn trong nhật ký của bạn (chúng sống trong /log). Trừ khi bạn đang sử dụng thứ gì đó, việc ghi nhật ký các thông số được bật theo mặc định trong tất cả các nhật ký.

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 liệt kê tất cả các thông số, và băm sau "story" là tương đương với params[:story] (tất cả những gì nói đến các máy chủ như dây đàn, và Rails biến nó thành một HashWithIndifferentAccess để bạn có thể truy cập nó bằng một biểu tượng).

0

Nếu bạn đang ở trên một hệ thống * NIX (bao gồm cả OS X) mở một terminal mới cửa sổ/tab và gõ lệnh sau:

tail -f log/phát triển.đăng nhập

Bạn sẽ nhận được một luồng yêu cầu liên tục đến - bao gồm thông số - và các hành động DB kết quả. Vô giá cho việc phát triển/gỡ lỗi, IMO.

2

Bây giờ tôi biết Rails hơn, bạn cũng có thể chỉ cần sử dụng một

p params 

trong mã của bạn và nhìn vào sản lượng của giao diện điều khiển (các bản ghi hiển thị trên giao diện điều khiển)

Các vấn đề liên quan