Solved

cycle twice

Posted on 2008-10-10
5
320 Views
Last Modified: 2013-11-13
For some reason when I put two calls to cycle in a loop, neither cycle - something like

<%= cylce("<tr><td>", "<td>")  %>
<%= check_box_tag ...... %>
<%= cycle("</td>", "</td></tr>"  %>

Only the first option of both cycles ever fires.
I tried combining them, but putting a check_box_tag into the single cycle also caused it to not cycle.

Any help would be much appreciated.

Thanks!
0
Comment
Question by:ARACK04
  • 3
  • 2
5 Comments
 
LVL 1

Expert Comment

by:ozataman
ID: 22688155
Hi,

It seems that you are changing the cycle parameters. Would it be possible to do:

<%= cylce("<tr><td>", "</td></tr>")  %>
<%= check_box_tag ...... %>
<%= cycle("<tr><td>", "</td></tr>"  %>

Also, if what you are trying to do is automate the html tags, you might want to define a helper function as:

def my_check_box_tag(field_name, value, html_options)
  content_tag :tr do
    content_tag :td do
      check_box_tag(field_name, value, html_options)
    end
  end
end

then just call it from the view as

<%= my_check_box_tag(:object, 3) %>

Cheers,
OA
0
 

Author Comment

by:ARACK04
ID: 22688466
Thanks for the reply - the whole point is that I want to create a table with 2 columns, so that's why the cycle parameters are different.

Is there no way to get more than one cycle in the same scope to bahve properly?
0
 
LVL 1

Accepted Solution

by:
ozataman earned 500 total points
ID: 22688501
Well, I you could do that with a helper function as well. But if you're not comfortable, then you could do:

cycle("<tr>","</tr>", :name => 'row')
cycle("<td>","</td>", :name => 'col')
first col
cycle("<td>","</td>", :name => 'col')
cycle("<td>","</td>", :name => 'col')
second col
cycle("<td>","</td>", :name => 'col')
cycle("<tr>","</tr>", :name => 'row')

I still think it's a lot easier to just either use a helper method, or plain old html.

Cheers,


0
 

Author Comment

by:ARACK04
ID: 22689524
I'd love to use plain HTML - the problem is is I'm looping through a collection of objects, and if I'm using html, I would have to have two calls to the current object ie

<table>
<% @people.each do |p| %>
<tr><td>
<%= check_box_tag (p.id)
</td><td>
HOW DO I GET THE NEXT OBJECT?
</td></tr>
<%end%>
</table>
0
 

Author Comment

by:ARACK04
ID: 22692139
Yeah - I think the answer was there-  I just didn't see it - just add names - here's the original code fixed:

                  <%= cycle("<tr><td>", "<td>", :name => :c1)  %>
                  
                  <input type="checkbox" id=<%= @subjects[i].id %> name="SubsChecked[]" value=<%= @subjects[i].id %>
                  <%= "checked=checked" if params["SubsChecked"] != nil && params["SubsChecked"].index(@subjects[i].id.to_s) != nil %> />                        
                  <label for=<%= @subjects[i].id %>><%= @subjects[i].name %></label>

                  <%= cycle("</td>", "</td></tr>", :name => :c2)  %>
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

I recently rediscovered rails when I needed a holiday project and decided to build a management dashboard for the company where I work.  With it being a project done in my free time, I could focus my time on learning the basics rather than trying to…
Recently I spent hours debugging an issue in a Rails project where ActiveRecord was causing MySQL errors trying to create a User object of a class at the top level of a Single Table Inheritance model structure.  It turns out `.create` behaves differ…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now