New to RoR - working through book have some questions

Greetings,

I'm new to Ruby on Rails. I'm working through "Agile Web Development
with Rails 3rd Edition" and it is going quite well. However, there
are times I don't quite understand *why* I'm doing something. For
some items, I think I understand, but I would like some confirmation.
So, I'm going to post my questions here and I hope that someone can
help me in understanding.

In Chapter 9, I'm working on creating an AJAX-based shopping cart.

So, I'm replacing this:

<!-- START:add_to_cart -->
<%= button_to "Add to Cart", :action => 'add_to_cart', :id => product
%>
<!-- END:add_to_cart -->

With this:

  <!-- START:form_remote_tag -->
  <% form_remote_tag :url => { :action => 'add_to_cart', :id =>
product } do %>
  <%= submit_tag "Add to Cart" %>
  <% end %>

Questions on this:

I can explain that the first second is doing this: "Use ruby helper
button_to to add a button for each item, and it calls the action
add_to_cart, passing back the product that was selected"

I can't seem to be able to explain the second section. "The rails
helper form_remote_tag is called, which is similar to a method call
and the :url is similar to passing a parameter to a method. The
items between { and } are the values for the :url parameter."
Correct?

What is the "submit_tag"? Is that similar to the input type="submit"
in HTML? Is it basically saying, show a button?

Why is the do%> and <% end %> part needed? Is this saying do the
following ruby code?

The difference between the two seconds, as the book explains, is that
the second sends an AJAX request instead of a POST request. I read
that, I think I understand it, but I don't exactly know why there is a
difference. Can someone explain?

I'll just start with this. Thanks,

Andrew

Greetings,

I'm new to Ruby on Rails. I'm working through "Agile Web Development
with Rails 3rd Edition" and it is going quite well. However, there
are times I don't quite understand *why* I'm doing something. For
some items, I think I understand, but I would like some confirmation.
So, I'm going to post my questions here and I hope that someone can
help me in understanding.

In Chapter 9, I'm working on creating an AJAX-based shopping cart.

So, I'm replacing this:

<!-- START:add_to_cart -->
<%= button_to "Add to Cart", :action => 'add_to_cart', :id => product
%>
<!-- END:add_to_cart -->

With this:

<!-- START:form_remote_tag -->
<% form_remote_tag :url => { :action => 'add_to_cart', :id =>
product } do %>
<%= submit_tag "Add to Cart" %>
<% end %>

Questions on this:

I can explain that the first second is doing this: "Use ruby helper
button_to to add a button for each item, and it calls the action
add_to_cart, passing back the product that was selected"

I can't seem to be able to explain the second section. "The rails
helper form_remote_tag is called, which is similar to a method call
and the :url is similar to passing a parameter to a method. The
items between { and } are the values for the :url parameter."
Correct?

pretty much. What's in the :url hash are routing options, ie the same
thing as the second parameter to button_to or link_to

What is the "submit_tag"? Is that similar to the input type="submit"
in HTML? Is it basically saying, show a button?

the xxx_tag helpers generate the appropriate input tags, so submit tag
is input type=submit, textfield_tag is a textfield etc.

Why is the do%> and <% end %> part needed? Is this saying do the
following ruby code?

form_tag / remote_form_tag take a block - the do/end are just the
block delimiters

The difference between the two seconds, as the book explains, is that
the second sends an AJAX request instead of a POST request. I read
that, I think I understand it, but I don't exactly know why there is a
difference. Can someone explain?

AJAX is a big topic in itself but the key difference is that whereas a
'normal' request reloads the whole page, an AJAX request just happens
in the background and you get to decide how the response from the
server is used.

Fred