Wow, that’s a lot of questions. First, let me recommend you take a copy of " Beginning Rails 3 ", which is a fantastic introduction to Rails that will answer all these questions and help you quickly become a very reliable rail programmer.
Secondly, here are some basic answers for you:
1) You do not have to browse products/create , you just browse products/new . Whenever you look at the URL, you send a GET request. The "new" action is waiting for a GET request, but the CREATE action is waiting for a POST request. POST requests are generated by submitting forms.
Therefore, the stream looks like this:
The NEW action is used to create a form corresponding to the model (products) in question. When you submit the form from products/new , it will be POST to products/create , which will call the code in the CREATE action.
The relationship between NEW and CREATE is reflected in EDIT and UPDATE. That is, to change the object you are viewing on products/123/edit , and from there you submit a form that triggers the UPDATE action.
All of this falls under the so-called RESTful design, which really is the heart of how Rails works. You can learn more about REST, here is a good place to start .
2) form_for receives data from the controller, but in the case of the NEW action it does not receive data, but only an empty (new) object. form_for is the helper that receives the object, and from this object defines some HTML code that must occur in order for the formed forms to interact correctly with your controller.
The same thing happens when loading a page in products/edit , but the difference is that if you pass form_for existing (not new) object, it will fill the form fields with existing values from the object.
3) Control transfer occurs through an HTTP request configured in the HTML <form> . This is part of the “magic” of rails, it controls the connection between the browser and the controllers for you, so you don’t need to worry about it.
4) I usually don’t use redirect_to(@product) , but I would expect it to take you to the page for the product you just created, that is: products/123 where 123 is the product identifier.
Hope this helps, but please consider putting together the book “The Beginning of Rails”: it’s very good, you can go through it in about a week, and you will save time from time to time than wandering around a code like this, which you are completely unfamiliar.