开发者

Rails: How do I print the request parameters?

开发者 https://www.devze.com 2023-02-07 04:39 出处:网络
I have a Rails 3 application and I want to print in the view the request parameters. How do I do it?开发者_StackOverflow

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

Edit:

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


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 %>


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


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


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] %>.


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


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.


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)


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]


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

0

精彩评论

暂无评论...
验证码 换一张
取 消