Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialBryan Guillen
1,051 Pointsruby on rails params[] hash explained?
Hey TreeHouse,
I am a bit confused on the subject of params hash...
I have looked everywhere for some sort of simple definition. But, I couldn't find anything...
What exactly are params hashes? Also, why would I use them?
Example,
class SessionsController < ApplicationController
def create
user = User.find_by(email: params[:sessions][:email].downcase
if user && user.authenticate?(params[:sessions][:password])
end
end
In the example above, I know that find_by is used in order to retrieve the user, and the tutorial even goes on to include "strong user params". However I am not so clear on why the params are included. By the way, I completely understand hashes and arrays. This is strictly for params.
Thank You, Bryan G.
Bryan Guillen
1,051 PointsAh, I see... Thanks Alan... Very Helpful.... Thanks.
2 Answers
Andrew Stelmach
12,583 PointsFor the purposes of coding most of the time, all you need to know is that the 'params' is a hash of key/value pairs assigned to a variable called 'params'. For what you're probably dealing with most of the time, you just need to know it's inside http requests and you can access it in your controllers.
An easy way to see it is to put a p params
inside one of your controller methods (I'll let you work out which one), and then you'll be able to see it in your local server readout.
It might look like this:
{"title"=>"Awesome title", "content"=>"Lorem ipsum innocuous but awesome text"}
In one of your controller methods, if you did:
Post.create(title: params["title"], content: params["content"])
...you would create a Post that had a title of "Awesome title" and content of "Lorem ipsum inoccuous but awesome text".
'Strong params' is a bit harder to get your head around, but it's a Railsey thing and I recommend reading the Rails Guides carefully on it and googling for some explanations and then posting a separate thread up if you're still not sure about it.
Ryan Dsouza
9,388 PointsIf the question still exists in your head, try this link. The explanation is as clear as it can be
http://api.rubyonrails.org/classes/ActionController/Parameters.html
Alan Matthews
10,161 PointsAlan Matthews
10,161 PointsThe
params
comes from the users browser. The values come from aGET
query string,POST
form data, or the path of the URL. Rails has ato_param
method to make the requests into hashes I believe.http://www.example.com/?foo[string]=bar&foo[other_string]=baz would equal
params[:foo]
would be a hash andparams[:foo][:string]
would be "bar" andparams[:foo][:other_string]
would be "baz".Link to Rails Guides on params: http://guides.rubyonrails.org/action_controller_overview.html#parameters