我目前正在参加Rails课程,并且在索引页面上正在显示数据库中存储的所有电影。理想情况下,我希望将其限制为仅显示5部电影,并在其下方具有导航按钮,如果需要的话,您可以随后显示更多电影。这是我为电影准备的一些代码。
index.html.erb
<% @movies.each do |movie| %>
<li>
<article class="movie">
<header>
<%= image_for(movie) %>
<h2><%= link_to movie.title, movie %> (<%= movie.released_on.year %>)</h2>
<h3><%= movie.cast %></h3>
</header>
<p>
<%= truncate(movie.description, length: 150, separator: ' ') %>
</p>
<table>
<tr>
<th>Rating</th>
<td><%= movie.rating %></td>
</tr>
<tr>
<th>Duration</th>
<td><%= movie.duration %></td>
</tr>
<tr>
<th>Total Gross</th>
<td><%= format_total_gross(movie) %></td>
</tr>
</table>
<footer>
</footer>
</article>
</li>
<% end %>
<%= button_to 'View more', root_path, params: { state: :submitted }%>
</ul>
控制器
def index
@movies = Movie.all
end
您可以使用Kaminari宝石。 https://github.com/kaminari/kaminari
在控制器中
def index
@moveis = Movie.page(params[:page]).per(5)
end
视图中
<%= link_to_next_page @movies, 'View more' %>
您甚至可以通过自己的代码来实现。
在控制器中
def index
if params[:previous_page_last_id].present?
@movies = Moive.where('id < ?', params[:previous_page_last_id]).order('id DESC').limit(5)
else
@movies = Moive.order('id DESC').limit(5)
end
end
视图中
<%= link_to 'View more', movies_path(previous_page_last_id: @moveis.last.id) %>