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.
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 %>
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.
for i in 0..10
puts i
end
0
1
2
3
4
5
6
7
8
9
10
=> 0..10
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.
-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-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.