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.

Reply via email to