Solved

cycle twice

Posted on 2008-10-10
5
322 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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In Ruby, Call or invoke a API DLL library is easily via Win32API class, win32-api gem or other gems. For general DLL API call, there are quite a few references, some good tips list below: http://www.rubytips.org/2008/05/13/accessing-windows-api-fro…
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…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

813 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

16 Experts available now in Live!

Get 1:1 Help Now