2010-06-03 3 views
0

Я использую ненавязчивое переключение в представлении, которое содержит много записей (заказы). У меня есть работа над отдельными div, но теперь я хочу, чтобы он работал, поэтому каждый заказ можно развернуть/заключить индивидуально в цикле, используя свою собственную ссылку переключения (ссылка также зациклирована).Ненавязчивое переключение в петле

Когда мой расширяемый div называется x, проблема заключается в том, что каждый цикл переключающей кнопки просто переключает первый div вместо div на свою собственную итерацию. Я полагаю, что лучший способ - использовать order_id для идентификатора каждого расширяемый раздел?

Более опытные зрители могли смеяться над этим :) но я пытался играть с кодом, такие как:

<% for order in @orders do %> 

# toggle 
<a class="toggle" href="#<%= order.id %>" rel="toggle[<%= order.id %>]">Toggle</a> 

# expandable div with its own nested toggle 
<div id="<%= order.id %>" class="expand_me"> 
    # nested toggle inside the looping expandable div 
    <a class="toggle" href="?" rel="toggle[?]">Toggle</a> 
    <div id="?" class="expand_me"> 
    ... 
    </div> 
</div> 

<% end %> 

Как вы можете видеть, в каждой из этих контуров есть некоторые подразделы Я хотел бы чтобы иметь возможность переключаться. Как бы изменилось решение, если мне нужно было бы переключать несколько divs внутри расширяемого looped div? Это связано с тем, что если я обращаюсь к главному переключателю div как order.id, то я не знаю, как обращаться к нескольким внутренним divs - это, очевидно, в соответствии с основной проблемой.

+1

Почему бы просто не использовать js для замены определенных div? Похоже, ваш метод - кошмарный адский сценарий html-кода, помните, что большая часть логики должна быть в вашем контроллере. Это было бы намного чище с ajax imo. – mpd

ответ

1

Вы заглянули в библиотеку JavaScript, такую ​​как JQuery, для этого? Вы должны сделать это, не добавляя никаких специальных классов или идентификаторов. Если ссылка <a> предназначена для переключения процесса <div>, вы можете просто перевести JavaScript на следующий элемент в DOM.