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
%>
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
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-
> ta...@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-ta...@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
Justin
To post to this group, send email to rubyonra...@googlegroups.com.