I''m trying to get the following idea to work: <%= @column_names.each { |t| <td> t.downcase </td> <td> @listing.send(t.downcase)</td> } %> Essentially I want to display a form that has a left and right TD, with the left TD being a column name and the right TD being the column data. If there''s a better way (the Rails way ?), I''m all ears (and half elf too.) Matt --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
And while were at it, could someone explain why the difference in Ruby / ERB? a = [ "a", "b", "c" ] a.each {|x|} => no result vs. <% arr=["a", "b", "c" ] %> <%= arr.each {|x|} %> => results in ''abc'' I thought I had a solution worked out, but the arr.each is adding stuff i can''t use. Matt On Tue, 2006-12-26 at 23:20 -0700, matt wrote:> > I''m trying to get the following idea to work: > > <%= @column_names.each { |t| <td> t.downcase </td> <td> > @listing.send(t.downcase)</td> } %> > > Essentially I want to display a form that has a left and right TD, with > the left TD being a column name and the right TD being the column data. > > If there''s a better way (the Rails way ?), I''m all ears (and half elf > too.) > > Matt > > > > > >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
matt wrote:> > And while were at it, could someone explain why the difference in Ruby / > ERB? > > a = [ "a", "b", "c" ] > a.each {|x|} => no resultIf you are doing this in Ruby, then it won''t print anything. Because you are not printing anything!!> > vs. > > <% arr=["a", "b", "c" ] %> > <%= arr.each {|x|} %> => results in ''abc'' > >ERB is meant to generate HTML/Text, when used within <%= %>, so above code works. I suggest, you read some Ruby books. PickAxe2 is a good book, but it assumes some previous programming experience so you can read David Black''s Ruby for Rails. Don''t consider this reply as an arrogant reply. But you really need to read stuff, you can''t push everything to the mailing list.> I thought I had a solution worked out, but the arr.each is adding stuff > i can''t use. > > Matt > > > On Tue, 2006-12-26 at 23:20 -0700, matt wrote: >> >> I''m trying to get the following idea to work: >> >> <%= @column_names.each { |t| <td> t.downcase </td> <td> >> @listing.send(t.downcase)</td> } %>Do a favor, do not write code like this in your views. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Well actually I''ve read the PickAxe, the new Ecomm book, Agile, numerous Tutorials and even watched a few screencasts. My previous experience is in Aerospace/Defense writing specialized C++ and flex/bison programs. I''m not a programming Noob. Actually I thought my question was quite intelligent. There is a definite difference in the way that ERB / Ruby handles this simplistic case, and none of the books I''ve read highlighted that as a major sticking point. Your reply is only arrogant because you really didn''t answer the question. Your reply is a lot like the books on this subject...empty. So how about finishing up your reply on why the ERB solution is printing out the "abc" when I haven''t given it a puts or print call Matt On Wed, 2006-12-27 at 12:45 +0530, Hemant Kumar wrote:> matt wrote: > > > > And while were at it, could someone explain why the difference in Ruby / > > ERB? > > > > a = [ "a", "b", "c" ] > > a.each {|x|} => no result > If you are doing this in Ruby, then it won''t print anything. Because you > are not printing anything!! > > > > > vs. > > > > <% arr=["a", "b", "c" ] %> > > <%= arr.each {|x|} %> => results in ''abc'' > > > > > ERB is meant to generate HTML/Text, when used within <%= %>, so above > code works. > > I suggest, you read some Ruby books. PickAxe2 is a good book, but it > assumes some previous programming experience so you can read David > Black''s Ruby for Rails. Don''t consider this reply as an arrogant reply. > But you really need to read stuff, you can''t push everything to the > mailing list. > > > > I thought I had a solution worked out, but the arr.each is adding stuff > > i can''t use. > > > > Matt > > > > > > On Tue, 2006-12-26 at 23:20 -0700, matt wrote: > >> > >> I''m trying to get the following idea to work: > >> > >> <%= @column_names.each { |t| <td> t.downcase </td> <td> > >> @listing.send(t.downcase)</td> } %> > Do a favor, do not write code like this in your views. > > > >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Dude, ERB only print something if you add ''='' signal ... <% You should stop reading books in a vertical way, since the difference between <% %> and <%= %> is explained in Chapter 4. Is not the reading quantity that matters... --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Sorry, I forgot to tell the book name, chapter 4 in Agile Web Development with Rails. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 27/12/2006, at 5:20 PM, matt wrote:> I''m trying to get the following idea to work: > > <%= @column_names.each { |t| <td> t.downcase </td> <td> > @listing.send(t.downcase)</td> } %>You could try: <% @column_names.each do |t| %> <td><%=h t.downcase %></td> <td><%=h @listing.send(t.downcase) %></td> <% end %> If it''s an ActiveRecord object you''re talking about, "@listing[t]" will be neater than the send. Cheers, Pete Yandell --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 27/12/2006, at 5:48 PM, matt wrote:> And while were at it, could someone explain why the difference in > Ruby / > ERB? > > a = [ "a", "b", "c" ] > a.each {|x|} => no resultIn irb: irb(main):001:0> a = [ "a", "b", "c" ] => ["a", "b", "c"] irb(main):002:0> a.each {|x|} => ["a", "b", "c"] So it doesn''t give you no result. The "each" method returns whatever it''s being asked to iterate over, which in this case is an array. Of course using each like this is pointless as you''re iterating over the array, performing a no-op on each element, and then returning the original array.> <% arr=["a", "b", "c" ] %> > <%= arr.each {|x|} %> => results in ''abc''Exactly the same thing happens here, except erb then takes the returned array, sticks the elements together as a string and spits out the result. If you want to iterate over the array without printing the result, use "<% ... %>" rather than "<%= ... %>". Cheers, Pete Yandell --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
dblack-TKXtfPMJ4Ozk1uMJSBkQmQ@public.gmane.org
2006-Dec-27 13:42 UTC
Re: Mixing html tags and Ruby blocks
Hi -- On Wed, 27 Dec 2006, matt wrote:> Well actually I''ve read the PickAxe, the new Ecomm book, Agile, numerous > Tutorials and even watched a few screencasts. My previous experience is > in Aerospace/Defense writing specialized C++ and flex/bison programs. > I''m not a programming Noob.Just to clarify: "Ruby for Rails" isn''t specifically for people who are new to programming. It''s for Rails developers who want to know what they''re actually doing :-) I think a new programmer with a sense of adventure, and a willingness to dig deeper as and when needed, will do very well with it. But that''s not the only or even the principal readership.>> > And while were at it, could someone explain why the difference in Ruby / >> > ERB? >> > >> > a = [ "a", "b", "c" ] >> > a.each {|x|} => no result >> > >> > vs. >> > >> > <% arr=["a", "b", "c" ] %> >> > <%= arr.each {|x|} %> => results in ''abc''The ingredients you need to understand this are: 1. <%= stuff %> interpolates a string representation of stuff into the ERb output stream. 2. each is not the same as map/collect. 3. each returns its receiver. The default string representation of an array is a string-based join. For ["a", "b", "c"] it''s "abc". So, by doing: <%= arr.each {|x| <this part is just side effect> } %> you''re telling ERb to interpolate "abc" into the output stream.> Your reply is only arrogant because you really didn''t answer the > question. Your reply is a lot like the books on this subject...empty.Let''s be fair. The Pickaxe documents the return value of Array#each, and that documentation has made its way into ri: array.each {|item| block } -> array "Ruby for Rails" talks at some length (page 244) about the return value of each, particularly in comparison with the return value of map. It also talks about ERb and the <%= %> delimiter, around page 30. And AWDWR, of course, talks a lot about ERb. It''s perfectly reasonable to ask about what''s happening, but no one''s hiding all this stuff from you :-) David -- Q. What is THE Ruby book for Rails developers? A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black) (See what readers are saying! http://www.rubypal.com/r4rrevs.pdf) Q. Where can I get Ruby/Rails on-site training, consulting, coaching? A. Ruby Power and Light, LLC (http://www.rubypal.com) --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
OK. First off, I want to apologize for my irresponsible response. It wasn''t fair of me to be so harsh for being told to go read more. I was tired, and should have left the keyboard alone, but that isn''t your problem, it''s mine. Next, my original question sparked a secondary question while I was figuring out the solution on my own. The secondary question being the ERB vs Ruby question That question was one of ''principle'' and ''theory'', not of practicality. I was trying to understand the ''why'', not the ''I broke this, help me fix it'' type of question. David summed it up well, that ''each'' returns it''s reciever, and his book (which I just got ahold of this morning for reference), summed up the same thing. And the output of the reciever in a ruby script prints nothing, while the output of ERB is to spit out the text of the reciever. I agree that there is a lot of documentation out there to read, but for me, there is still a lot that is uncorrellated (like each/erb) that I think is fair game to ask as a question. The original responder said that I needed to read more and not ask questions that are readily available. I don''t believe that the answer to this question was ''readily available'' David, you called me on the carpet and you are right. The books do cover ERB, however, as I read them, they didn''t seem to answer my question, because they didn''t cover or warn about printing the return value of something like each. Again, I apologize for running astray with my response, and I hope you can forgive me for such a stretch of temp insanity. And thank you everyone for being genuinely concerned enough to respond, and clear this up. Matt On Wed, 2006-12-27 at 08:42 -0500, dblack-TKXtfPMJ4Ozk1uMJSBkQmQ@public.gmane.org wrote:> Hi -- > > On Wed, 27 Dec 2006, matt wrote: > > > Well actually I''ve read the PickAxe, the new Ecomm book, Agile, numerous > > Tutorials and even watched a few screencasts. My previous experience is > > in Aerospace/Defense writing specialized C++ and flex/bison programs. > > I''m not a programming Noob. > > Just to clarify: "Ruby for Rails" isn''t specifically for people who > are new to programming. It''s for Rails developers who want to know > what they''re actually doing :-) I think a new programmer with a sense > of adventure, and a willingness to dig deeper as and when needed, > will do very well with it. But that''s not the only or even the > principal readership. > > >> > And while were at it, could someone explain why the difference in Ruby / > >> > ERB? > >> > > >> > a = [ "a", "b", "c" ] > >> > a.each {|x|} => no result > >> > > >> > vs. > >> > > >> > <% arr=["a", "b", "c" ] %> > >> > <%= arr.each {|x|} %> => results in ''abc'' > > The ingredients you need to understand this are: > > 1. <%= stuff %> interpolates a string representation of stuff > into the ERb output stream. > 2. each is not the same as map/collect. > 3. each returns its receiver. > > The default string representation of an array is a string-based join. > For ["a", "b", "c"] it''s "abc". So, by doing: > > <%= arr.each {|x| <this part is just side effect> } %> > > you''re telling ERb to interpolate "abc" into the output stream. > > > Your reply is only arrogant because you really didn''t answer the > > question. Your reply is a lot like the books on this subject...empty. > > Let''s be fair. The Pickaxe documents the return value of Array#each, > and that documentation has made its way into ri: > > array.each {|item| block } -> array > > "Ruby for Rails" talks at some length (page 244) about the return > value of each, particularly in comparison with the return value of > map. It also talks about ERb and the <%= %> delimiter, around page > 30. And AWDWR, of course, talks a lot about ERb. > > It''s perfectly reasonable to ask about what''s happening, but no one''s > hiding all this stuff from you :-) > > > David >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks. That''s what I needed. But I couldn''t get the @listing[t] to work. No errors, but it didn''t display anything either. Thanks again Matt On Wed, 2006-12-27 at 23:38 +1100, Pete Yandell wrote:> You could try: > > <% @column_names.each do |t| %> > <td><%=h t.downcase %></td> > <td><%=h @listing.send(t.downcase) %></td> > <% end %> > > If it''s an ActiveRecord object you''re talking about, "@listing[t]" > will be neater than the send. > > Cheers, > > Pete Yandell > > > > >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---