(Rails Kaminari) неопределенный метод `current_page' для #‹Array:

Я посмотрел выпуск о Каминари на railscasts.com и попытался добавить эту систему в свой блог. Но эта ошибка появляется снова и снова, и я не понимаю, почему.

index действие от контроллера сообщений:

  def index
@posts = Post.order("title").page(params[:page]).per(3)

if params[:tag]
  @posts = Post.tagged_with(params[:tag])
else
  @posts = Post.all
end

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @posts }
  end
end

просмотреть файл: index.html.erb:

<%= paginate @posts%>

<% @posts.each do |post| %>

<h2><%= link_to post.title, post %></h2>
  <p>
    Created: <%= post.created_at.strftime("%Y/%m/%d")%> by
     <%=  link_to post.user.fullname, user_posts_path(post.user) %>
  </p>

  <p>
  <%= simple_format post.text %>
  </p>

  <p>
Tags: <%= raw post.tag_list.map { |t| link_to t, tag_path(t) }.join(', ')      %>
  </p>

  <% end %>

person user2596615    schedule 30.07.2013    source источник


Ответы (1)


Вы дважды объявляете @posts в своем контроллере. Попробуйте что-то вроде этого:

if params[:tag]
  @posts = Post.tagged_with(params[:tag]).order("title").page(params[:page]).per(3)
else
  @posts = Post.order("title").page(params[:page]).per(3)
end

После удаления верхней строки @posts = Post.order("title").page(params[:page]).per(3).

person okay56k    schedule 30.07.2013
comment
Большое спасибо! Это сработало. И еще вопрос: как сортировать посты по новизне? (сначала самые новые, потом старые) - person user2596615; 30.07.2013
comment
Слишком легко. Что-то вроде .order(:created_at) или .order('created_at DESC') должно помочь. - person okay56k; 30.07.2013