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.

Reply via email to