Reputation: 603
The error output is:
undefined method `total_pages' for #<Review:0x007fe460871f08>
Movie#Show:
def show
@review = @movie.reviews.paginate(page: params[:page], per_page: 6).order('created_at DESC').build
end
I set @movie via before_filter.
My view:
<% if @movie.now_playing %>
<% if @movie.reviews.any? %>
<% @movie.reviews.each do |review| %>
<div id="each_review_container">
<span><%= link_to @movie.creator.name, user_path(@movie.creator) %> | </span>
<span id="time"><%= review.created_at.try(:strftime,'%b %d, %Y') %></span>
<p>Rating: <%= review.rating %>/10</p>
<p><%= review.content %></p>
</div>
<% end %>
<div class="digg_pagination"><%= will_paginate @review %></div>
<% else %>
<span id="review_message">No Reviews yet!</span>
<span id="add_new_review_link"><%= link_to 'Add New Review', new_movie_review_path(@movie) %></span>
<% end %>
<% else %>
<p id="review_message">You will be able to submit a review when the movie releases</p>
<% end %>
Restarted my server and I get the same error.
Been stuck on this for a while and would appreciate any assistance, thanks!
Upvotes: 0
Views: 117
Reputation: 761
In Your view ,you are calling @movie.reviews Why are you writing @movie.reviews in loop ?You should be using @review of action instead.It is firing query every time you call it.
@movie.reviews in your view is causing error here's guess,since it doesn't include pagination parameter and you are trying to pagination through it.
Upvotes: 0
Reputation: 10961
It looks like a bug, I think you want to get reviews not one review:
def show
@reviews = @movie.reviews.order('created_at DESC').paginate(page: params[:page], per_page: 6)
end
View:
<% if @movie.now_playing %>
<% if @reviews.any? %>
<% @reviews.each do |review| %>
<div id="each_review_container">
<span><%= link_to @movie.creator.name, user_path(@movie.creator) %> | </span>
<span id="time"><%= review.created_at.try(:strftime,'%b %d, %Y') %></span>
<p>Rating: <%= review.rating %>/10</p>
<p><%= review.content %></p>
</div>
<% end %>
<div class="digg_pagination"><%= will_paginate @reviews %></div>
<% else %>
<span id="review_message">No Reviews yet!</span>
<span id="add_new_review_link"><%= link_to 'Add New Review', new_movie_review_path(@movie) %></span>
<% end %>
<% else %>
<p id="review_message">You will be able to submit a review when the movie releases</p>
<% end %>
Upvotes: 2