Thank you. On Mon, May 16, 2011 at 2:22 PM, David Kahn <d...@structuralartistry.com>wrote:
> > > On Mon, May 16, 2011 at 1:04 PM, Rodrigo Ruiz <rodrigo.ru...@gmail.com>wrote: > >> 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? >> >> Correct > > >> And what is the point of making '@user' instead of 'user' (local variable) >> if it will be lost anyway for other requests? >> > > Try it and you will understand.... if you make it 'user' the form wont see > it. Remember, 'user' inside a controller method is local to that method. If > you have any class and want to make a variable visible for the whole class, > not just the immediate method, you need to use @var (or another method). > Think of the view as being in the same class as the controller but not > inside the controller method. > >> >> 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. >> > > -- > 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.