我有一个项目列表,其中包含一些我想在点击显示/隐藏细节链接时显示的细节。经过一些实验后,我遇到了两个问题。ruby“each do”and scriptaculous Effect.BlindDown/Up
我很难使它显示/隐藏链接只显示特定项目的div。现在,点击任何显示/隐藏链接时,它会显示所有div。
此外,必须有一个更优雅的方式来做到这一点,而不需要做一个循环来生成一堆javascript。我看着效果。多种,但我不知道如何在这种情况下使用它。
一些洞察力或指向大方向将不胜感激! 谢谢!
这里是供参考的代码。
<script type="text/javascript">
function show_details() {
<% @posts.each do |b| %>
Effect.BlindDown('details_<%= b.id %>', {duration:0.3});
$('hide_details_link_<%= b.id %>').style.display = 'inline';
$('show_details_link_<%= b.id %>').style.display = 'none';
<% end %>
}
function hide_details() {
<% @posts.each do |b| %>
Effect.BlindUp('details_<%= b.id %>', {duration:0.3});
$('hide_details_link_<%= b.id %>').style.display = 'none';
$('show_details_link_<%= b.id %>').style.display = 'inline';
<% end %>
}
</script>
<ul id="posts">
<% @posts.each do |b| %>
<li>
<div id="show_details_link_<%= b.id %>" style="display:inline;">
<%= link_to_function "show details", 'show_details()' %>
</div>
<div id="hide_details_link_<%= b.id %>" style="display:none;">
<%= link_to_function "hide details", 'hide_details()' %>
</div>
<div id="details_<%= b.id %>" style="display:none;">
<p> <%= b.comments %></p>
</div>
</li>
<li><%= link_to b.title, {:action => 'show', :id => b.id} -%></li>
<% end %>
</ul>