我的应用程序中有一部分显示消息。我正在尝试使用灯箱在单击时显示每条消息的一部分。我的问题是我使用ID链接到隐藏的div。由于我使用的是ID,因此链接只会显示第一条消息而不是每条后续消息。我怎样才能改变这一点,以便每个迭代的消息都会显示它自己的消息而不是第一个消息?
我在下面提供了我的代码。我正在使用fancybox灯箱。
感谢您的帮助。
<tbody>
<% @messages.each do |m| %>
<tr>
<td><%= m.from.name %></td>
<td><%= truncate(m.topic, length: 30) %></td>
<td><%= link_to truncate(m.body, length: 35), "#user_message", class: 'fancybox' %></td>
<td>
<%= link_to 'Mark Read', '#', confirm: 'Are you sure?', :class => 'btn btn-mini' %>
<%= link_to 'Reply', '#', confirm: 'Are you sure?', :class => 'btn btn-mini btn-inverse' %>
<%= link_to 'Delete', '#', confirm: 'Are you sure?', :class => 'btn btn-mini btn-danger' %>
</td>
</tr>
<div style="display:none" id="user_message">
<%= m.body %>
</div>
<% end %>
</tbody>
答案 0 :(得分:1)
一个简单的解决方案是通过附加一些独特的东西来强制ID是唯一的,比如说消息的数字ID:
<% @messages.each do |m| %>
<tr>
...
<td><%= link_to truncate(m.body, length: 35), "#user_message-#{m.id}", class: 'fancybox' %></td>
...
</tr>
<div style="display: none" id="user_message-<%= m.id %>">
...
答案 1 :(得分:0)
在没有查看你的JQuery代码的情况下很难告诉你一个确切的答案,但通常做这些事情的方式是附加一个动态值来区分div
前:
<tbody>
<% @messages.each do |m| %>
<tr>
<td><%= m.from.name %></td>
<td><%= truncate(m.topic, length: 30) %></td>
<td><%= link_to truncate(m.body, length: 35), "#user_message{m.id}", class: 'fancybox' %></td>
<td>
<%= link_to 'Mark Read', '#', confirm: 'Are you sure?', :class => 'btn btn-mini' %>
<%= link_to 'Reply', '#', confirm: 'Are you sure?', :class => 'btn btn-mini btn-inverse' %>
<%= link_to 'Delete', '#', confirm: 'Are you sure?', :class => 'btn btn-mini btn-danger' %>
</td>
</tr>
<div style="display:none" id="user_message{m.id}">
<%= m.body %>
</div>
<% end %>
</tbody>
请注意appender {m.id}
部分
HTH