On Dec 30, 2009, at 4:08 PM, Frederick Cheung wrote:
> On Dec 30, 6:39 pm, webbieguy <justin.dean.griff...@gmail.com> wrote:
>> Hi,
>>
>> I have a very simple problem. I am a newbie to rails and for the life
>> of me can't figure out why a simple incrementing loop is not printing
>> to screen correctly. I know this has to be something simple but can't
>> find anything specific to my problem.
>>
>> <%=
>> for i in 0..10 do
>> puts "i is now #{i}"
>> end
>> %>
>>
> Because in a view you don't use puts (puts either goes nowhere or to a
> logfile somewhere).
> The <%= stuff the result of the chunk of code into the view, for a
> 'for' statement like you've got there then the result is the thing
> iterated over (ie 0..10).
>
> you want something more like
>
> <% looping construct of your choice  do %>
>  i is now <%= i %>
> <% end %>
>
> Fred

In addition to what Fred says, your other problem is that you have:
   for i in <Range> do
     #stuff
   end
and you want: (note there's no 'do' on a for loop)
   for i in <Range>
     #stuff
   end
so that would be:
   for i in 0..10
     #stuff
   end

You're getting "0..10" because that's the value of the expression in  
the <%= %>
Try this in irb and you'll see.
irb> for i in 0..10
irb>   puts i
irb>   end
0
1
2
3
4
5
6
7
8
9
10
=> 0..10
irb>


It's more likely, you want to have:

<% (0..10).each do |i| %>
  i is now <%= i %>
<% end %>

The difference being mainly that the local variable i will only exist  
inside the block and iterating over a collection using .each is much  
more common. See James Gray's article "Shades of Gray: The Evils of  
the For Loop" for a more thorough explanation.

http://blog.grayproductions.net/articles/the_evils_of_the_for_loop

-Rob

>> Prints to screen "0..10" as opposed to what I want:
>>
>> 0
>> 1
>> 2
>> 3
>> 4
>> 5
>> 6
>> 7
>> 8
>> 9
>> 10
>>
>> Can someone help me with this very simple problem. I have tried
>> until, .times, and while loops to no avail. So there must be some  
>> type
>> of syntax magic I am missing.
>>
>> Thanks in advance,
>> Justin
>
> --
>
> 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- 
> t...@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 
> .
>
>

Rob Biedenharn          http://agileconsultingllc.com
r...@agileconsultingllc.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-t...@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