On Dec 30, 2009, at 4:08 PM, Frederick Cheung wrote:
> On Dec 30, 6:39 pm, webbieguy <[email protected]> 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-
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en
> .
>
>
Rob Biedenharn http://agileconsultingllc.com
[email protected]
--
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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.