Rails - WillPaginate 冲突

发布于 2024-11-09 19:24:12 字数 1007 浏览 4 评论 0原文

我正在尝试对 group 拥有的 messages 进行分页。

class GroupsController < ApplicationController
...
def show
...
@message = @group.messages.paginate(:page => params[:page])
end

  <% unless @group.messages.empty? %>
  <table class="messages" summary="Messages from Group">
  <tr>
  <td class="messages">
  <span class="content"><%= messages.content%></span>
  <span class="timestamp">
  Posted <%= time_ago_in_words(messages.created_at) %> ago.
  </span>
  </td>
  </tr>
 </table>
 <%= will_paginate @messagess%>
 <%end %>

但是,当我尝试打开 group#show 页面时,出现错误:undefined method 'content' for #,但是错误给出的行是我创建新 Message 的行,它也在 group#show 页面中:

 <%= f.text_area :content, :rows=>5 , :cols=>49 %> 

有什么想法吗?

I'm trying to paginate the messages a group has.

class GroupsController < ApplicationController
...
def show
...
@message = @group.messages.paginate(:page => params[:page])
end

  <% unless @group.messages.empty? %>
  <table class="messages" summary="Messages from Group">
  <tr>
  <td class="messages">
  <span class="content"><%= messages.content%></span>
  <span class="timestamp">
  Posted <%= time_ago_in_words(messages.created_at) %> ago.
  </span>
  </td>
  </tr>
 </table>
 <%= will_paginate @messagess%>
 <%end %>

But when I try to open my group#show page, gives me the error: undefined method 'content' for #<WillPaginate::Collection:0x31a67f0>, but the line the error gives is the line where I create a new Message, that is in the group#show page as well:

 <%= f.text_area :content, :rows=>5 , :cols=>49 %> 

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

完美的未来在梦里 2024-11-16 19:24:12

您需要遍历消息并单独打印每一条消息。

控制器:

def show
  @messages = @group.messages.paginate(:page => params[:page])
end

视图:

<% unless @messages.empty? %>
  <table class="messages" summary="Messages from Group">

    <% @messages.each do |message| %>
      <tr>
        <td class="messages">
          <span class="content"><%= message.content %></span>
          <span class="timestamp">
            Posted <%= time_ago_in_words(message.created_at) %> ago.
          </span>
        </td>
      </tr>
    <% end %>

  </table>
  <%= will_paginate @messagess%>
<% end %>

为了防止表单上出现错误,您需要向其传递单个消息实例。例如

form_for(Message.new) do

You need to loop over the messages and print each one out individually.

Controller:

def show
  @messages = @group.messages.paginate(:page => params[:page])
end

View:

<% unless @messages.empty? %>
  <table class="messages" summary="Messages from Group">

    <% @messages.each do |message| %>
      <tr>
        <td class="messages">
          <span class="content"><%= message.content %></span>
          <span class="timestamp">
            Posted <%= time_ago_in_words(message.created_at) %> ago.
          </span>
        </td>
      </tr>
    <% end %>

  </table>
  <%= will_paginate @messagess%>
<% end %>

To prevent the error on your form you will need to pass it a single instance of a message. e.g.

form_for(Message.new) do
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文