Я написал код ниже, и он работает. Но я знаю, что это слишком много для файла вида, и большая часть этого кода должна быть написана в контроллерах. А потом, я попытался переписать его на контроллер, но получил сообщение об ошибкеВид, контроллер и переменные
"undefined method `group' for nil:NilClass".
Не могли бы вы дать мне несколько советов?
【】 Перед переписывания
☆ show.html.erb (#members)
<div class="message_area">
<% posts_in_groups = GroupMessage.where(:member_id => params[:id]).order("created_at desc").paginate(:page => params[:page], :per_page => 3) %>
<div class="each_message">
<% posts_in_groups.each do |post_in_group|%>
<a href="/groups/<%= post_in_group.group.id %>" ><%= image_tag post_in_group.group.imageurl, :width => '20', :height => '25' %><%= "(" + post_in_group.group.name + ")" %></a>
<%= 'Page:' + post_in_group.page.to_s + '&' %><%= 'Line:' + post_in_group.line.to_s %>
(<%= post_in_group.created_at.strftime'%Y-%m-%d %H:%M' %>)
<div class="group_message">
<p class="message_content"><a href="/group_messages/<%= post_in_group.id%>" ><%= truncate(post_in_group.content, { :length => 50}) %></a></p>
</div><!--group_message-->
<br>
<% end %>
<%= will_paginate(posts_in_groups) %>
</div><!--each message-- >
</div><!--message area-->
【】 после перезаписи
☆ show.html.erb (#members)
<div class="message_area">
<div class="each_message">
<a href="/groups/<%= @post_in_group.group.id %>" ><%= image_tag @post_in_group.group.imageurl, :width => '20', :height => '25' %><%= "(" + @post_in_group.group.name + ")" %></a>
<%= 'Page:' + @post_in_group.page.to_s + '&' %><%= 'Line:' + @post_in_group.line.to_s %>
(<%= @post_in_group.created_at.strftime'%Y-%m-%d %H:%M' %>)
<div class="group_message">
<p class="message_content"><a href="/group_messages/<%= @post_in_group.id%>" ><%= truncate(@post_in_group.content, { :length => 50}) %></a></p>
</div><!--group_message-->
<br>
<%= will_paginate(@posts_in_groups) %>
</div><!--each message-- >
</div><!--message area-->
☆ members_controller
@posts_in_groups = GroupMessage.where(:member_id => params[:id]).order("created_at desc").paginate(:page => params[:page], :per_page => 3)
@posts_in_groups.each do |post_in_group|
@post_in_group = post_in_group
end
☆ GroupMessage модели
class GroupMessage < ActiveRecord::Base
attr_accessible :content, :member_id, :group_id, :page, :line
belongs_to :member
belongs_to :group
has_many :group_message_comments, :dependent => :destroy
end
Большое вам спасибо, господин Мауричил Линарес. Я думаю, что ваш пересмотр является точным и правильным, но я получил сообщение об ошибке, подобное этому. undefined method 'each 'for nil: NilClass вокруг« Страница: <% = post.page> ». Понятия не имею. Итак, вы могли бы рассказать мне, почему это происходит? –
Как метод 'page' реализован в классе GroupMessage? –
Модель GroupMessage имеет столбец страниц и строку столбца. Я добавил модель GroupMessage в статью. –