我正在尝试对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 #<WillPaginate::Collection:0x31a67f0>
,但错误给出的行是我创建新Message
的行,也就是在group#show
页面中:
<%= f.text_area :content, :rows=>5 , :cols=>49 %>
有什么想法吗?
您需要对消息进行循环并单独打印每个消息。
控制器:
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