0

我的应用程序的一部分显示了消息。我正在尝试使用灯箱在单击时显示每条消息的一部分。我的问题是我使用 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>
4

2 回答 2

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 %>">
  ...
于 2012-11-23T04:43:57.443 回答
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> 

注意附加{m.id}部分

高温高压

于 2012-11-23T04:44:26.197 回答