Rails链接到类或迭代Id

时间:2012-11-23 04:33:16

标签: jquery ruby-on-rails

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

2 个答案:

答案 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