Rails get index of "each" loop [duplicate] - ruby-on-rails

This question already has answers here:
Finding out current index in EACH loop (Ruby) [duplicate]
(2 answers)
Automatic counter in Ruby for each?
(8 answers)
Closed 6 years ago.
So I have this loop:
<% #images.each do |page| %>
<% end %>
How would I get the index of "page" inside of the loop?

<% #images.each_with_index do |page, index| %>
<% end %>

The two answers are good.
And I also suggest you a similar method:
<% #images.each.with_index do |page, index| %>
<% end %>
You might not see the difference between this and the accepted answer. Let me direct your eyes to these method calls: .each.with_index see how it's .each and then .with_index.

Try each_with_index.

Related

What is the - at the <% end -%>? [duplicate]

This question already has answers here:
What is the difference between <%, <%=, <%# and -%> in ERB in Rails?
(7 answers)
Closed 4 years ago.
I am currently learning ruby-on-rails and I noticed in the tutorial I am following that closing the syntax <% end %>.
Out of curiosity, I wanted to know why mine is showing <% end -%> with the minus sign before %. The codes are working just fine with the minus sign?
<% end -%>
is used to avoid line break after expression
<% %> and <%- -%> are the same. however that <%= %> and <%= -%> are different: only the latter removes trailing whitespaces.
Example :
<div>
<%= "Hii" -%>
</div>
It will produce
<div>
Hii</div>
and without '-' :
<div>
Hii
</div>

Iterating through array gives full array of items at the end [duplicate]

This question already has answers here:
Ruby / Rails - .each Iterator is printing entire array at the end of the loop [duplicate]
(2 answers)
Closed 5 years ago.
I am trying to iterate through a set of records. However, at the end of the iteration, rails displays the full array.
<%= #portfolio_item.technologies.each do |technology| %>
<p><%= technology.name %></p>
<% end %>
What shows up in the browser
Replace this line
<%= #portfolio_item.technologies.each do |technology| %>
with this
<% #portfolio_item.technologies.each do |technology| %>
<%= %> will evaluate the expression and returns the array.

ruby on rails: weird array output [duplicate]

This question already has answers here:
Why am I getting objects printed twice?
(4 answers)
Closed 6 years ago.
I have this code in on of my views
<%= #quotes.each do |f| %>
<%=f[:underwriter]%>: £<%=f[:premium]%>
<br>
<% end %>
And in my controller I pass it the argument
#quotes = [{underwriter:"dtc",premium:500},{underwriter:"abc",premium:800}]
I expect it to print out the underwriter and premium, which it does, however it tags the whole array on at the end for some reason. This is shown below
dtc: £500
abc: £800
[{:underwriter=>"dtc", :premium=>500}, {:underwriter=>"abc", :premium=>800}]
Anyone can enlighten my to what is causing this behaviour?
Just do
<% #quotes.each do |f| %>
<%=f[:underwriter]%>: £<%=f[:premium]%>
<br>
<% end %>
Array#each - Calls the given block once for each element in self, passing that element as a parameter. when iteartion completed, return the self. <%= %> prints what is in between inside the tag into erb file, whereas <% %> executes the ruby code within the brackets.
Check this one Rails, ERB syntax also.

Why is .each repeating the array after completion in my rails view? [duplicate]

This question already has answers here:
What is the difference between <%, <%=, <%# and -%> in ERB in Rails?
(7 answers)
Closed 3 years ago.
In my rails view page, I have the following loop that should loop through my tag_list array and print each tag:
<%= #user.profile.tag_list.each do |tag| %>
<%= tag %>
<% end %>
For some reason, it repeats the array after it prints each individual tag. For example, this array has two elements:
["ruby", "python"]
The output of the each method is "rubypython ruby,python". The output should just be "ruby python". How do I fix this?
By the way, I am using the acts-as-taggable-on gem to generate the tags, but that should not make a difference since it is just a simple array.
you should remove the equals sign
<%= #user.profile.tag_list.each do |tag| %>
to
<% #user.profile.tag_list.each do |tag| %>
the embedded ruby is printing your each block after it's run, so you're getting results of .each being run as well as the tag

What is the difference between "-%>" and "%>" in Rails 3? [duplicate]

This question already has answers here:
'-%>' (minus sign) at the end of a ERb sequence
(2 answers)
Closed 8 years ago.
What is the difference between :
<% #posts.each do |p| -%>
<%= p.title %>
<% end -%>
and
<% #posts.each do |p| %>
<%= p.title %>
<% end %>
and is there any ?
-%> means that do not insert '\n' and whitespaces after the command.
There is no difference.
"-%>" is completely useless in Rails 3.

Resources