Nerian
Nerian

Reputation: 16177

Rails: How do I print the request parameters?

I have a Rails 3 application and I want to print in the view the request parameters. How do I do it?

Edit:

The purpose is to see what is being sent in a Form.

Upvotes: 56

Views: 96681

Answers (9)

bunufi
bunufi

Reputation: 764

ap params.to_unsafe_h

Example output:

[19] pry(#<AssessmentsController>)> ap params.to_unsafe_h
{
                  "utf8" => "✓",
    "authenticity_token" => "",
            "assessment" => {
        "form_field_10" => "0",
        "form_field_12" => "1"
    },
                "commit" => "Create Assessment",
            "controller" => "assessments",
                "action" => "create"
}
=> nil

Uses https://github.com/awesome-print/awesome_print

Based on https://stackoverflow.com/a/49342607

Upvotes: 1

Kibet Yegon
Kibet Yegon

Reputation: 2823

Learnt this from the Ruby Hero James Edward Gray II on this episode of Ruby Rogues podcast which I highly recommend. raise is a swiss army knife for inspecting anything in your Rails code which prints it nicely on your browser.

raise params.inspect

Upvotes: 15

alexts
alexts

Reputation: 180

Something like

<%= params.inspect %>

works, but what I would like to add is the following gem and Chrome plugin which was literally an eye-opener.

I am putting it here because I think it will help people check out params hashes, see SQL queries or view Errors.

Upvotes: 4

wes.hysell
wes.hysell

Reputation: 1209

Source: http://guides.rubyonrails.org/getting_started.html#creating-articles

When a form is submitted, the fields of the form are sent to Rails as parameters. These parameters can then be referenced inside the controller actions, typically to perform a particular task. To see what these parameters look like, change the create action to this:

def create
  render plain: params[:article].inspect
end

The response when POST'ing a form to the targeted #create route would be a plain-text hash output of params[:article]

Upvotes: 3

nikolayp
nikolayp

Reputation: 17919

pretty_print also can be useful, in ruby and rails apps both

pp params

pretty_print doc: http://ruby-doc.org/stdlib-2.1.0/libdoc/pp/rdoc/PP.html

Upvotes: 4

d.danailov
d.danailov

Reputation: 9800

You can use for models, controllers, etc.

puts YAML::dump(params)

Source: Ruby / Rails alternative to PHP print_r() and var_dump()

For views:

DebugHelper’s debug(object)

In your case:

DebugHelper’s debug(params)

Upvotes: 3

Rob Di Marco
Rob Di Marco

Reputation: 44952

If you wanted to print all of the parameters, the easiest way would be to use the inspect

puts params.inspect

or better, use the Rails logger

Rails.logger.debug params.inspect

In your html/ERB, you can use

<%= params.inspect %>

Upvotes: 90

Andrew
Andrew

Reputation: 43113

I would use debug(params). That will give you a nicely formatted view of them.

Upvotes: 48

Dylan Markow
Dylan Markow

Reputation: 124419

Parameters are stored in the params hash. For example, if there was a title parameter, you could display it in your view using <%= params[:title] %>.

Upvotes: 13

Related Questions