Now I think I got it, thank you. I need @user = User.new for the line 'form_for(@user)' in the view 'new.html.erb' right?
And what is the point of making '@user' instead of 'user' (local variable) if it will be lost anyway for other requests? On Mon, May 16, 2011 at 1:51 PM, David Kahn <d...@structuralartistry.com>wrote: > > > On Mon, May 16, 2011 at 12:46 PM, Rodrigo Ruiz <rodrigo.ru...@gmail.com>wrote: > >> if it has no knowledge of @user in the 'new' action, why do I need to do >> @user = User.new? What is the point, if it will be lost for other actions? >> >> > @user is used in @user = User.new so that you have your new user object > available for the form builder on the view. > > >> I thought that all that i wrote with '@' in ruby was an instance variable, >> meaning it is accessible to the whole instance, meaning any of its methods. >> > > It is but as others have mentioned before, and maybe in other words: > whatever you create only applies to the current request. The next time the > browser hits the controller, it is fresh and you start over (and maybe use > params or sessions to keep the state as needed). > > >> >> >> On Tue, May 10, 2011 at 4:32 PM, Colin Law <clan...@googlemail.com>wrote: >> >>> On 10 May 2011 21:23, Rodrigo Ruiz <rodrigo.ru...@gmail.com> wrote: >>> > Hi, I'm having some trouble to understand the following code: >>> > def new >>> > @user = User.new >>> > @title = "Sign up" >>> > end >>> > >>> > def create >>> > @user = User.new(params[:user]) >>> > if @user.save >>> > flash[:success] = "Welcome to the Sample App!" >>> > redirect_to @user >>> > else >>> > @title = "Sign up" >>> > @user.password = "" >>> > @user.password_confirmation = "" >>> > render 'new' >>> > end >>> > end >>> > Since I do '@user = User.new' in the 'new' method, why do i need to >>> do it >>> > again '@user = User.new(params[:user])' instead of >>> > '@user.update_attributes(params[:user])' in the 'create' method? >>> >>> Each action in the controller is a new request to the web server so >>> the create action has no knowledge of @user set up in the new action. >>> It can only go by what is in params. >>> >>> > Also I don't get the difference between 'render' and 'redirect_to', >>> what >>> > I read was that 'render' doesn't clean out the variables, whereas >>> > 'redirect_to' does, so back to the first question... >>> >>> Render will re-show the 'new' page, with the form for filling in the >>> new user so the user can fix the errors @user still has the values >>> from the data was submitted last time so the form will show the same >>> data again. The redirect causes the 'show' *action* to be run for the >>> user, which results in that user being shown. >>> >>> Colin >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Ruby on Rails: Talk" group. >>> To post to this group, send email to rubyonrails-talk@googlegroups.com. >>> To unsubscribe from this group, send email to >>> rubyonrails-talk+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/rubyonrails-talk?hl=en. >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ruby on Rails: Talk" group. >> To post to this group, send email to rubyonrails-talk@googlegroups.com. >> To unsubscribe from this group, send email to >> rubyonrails-talk+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/rubyonrails-talk?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.