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
Frederick Cheung
2009-Sep-19 22:01 UTC
Re: New to RoR - working through book have some questions
On Sep 19, 8:40 pm, andrew <andrew.ggro...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> 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