我使用Ruby on Rails 4.1创建了一个票务预订应用程序作为我的示例项目。三个是三个模型 - 活动,门票和预订。活动有很多门票和预订。门票有很多预订,属于活动。预订属于活动和门票。
路线文件如下:
Rails.application.routes.draw do
devise_for :users
resources :charges
root 'events#index'
resources :events do
resources :tickets
resources :bookings
end
end
现在,我使用了will_paginate gem来组织Events和Bookings的索引页面。在事件的情况下,它非常简单,分页工作正常。但是,当涉及到嵌套资源的预订时,索引页面具有分页链接,但所有页面都显示所有预订条目。根本没有分页。
预订控制器看起来像:
class BookingsController < ApplicationController
before_action :authenticate_user!, only: [:index, :destroy]
def index
@event = Event.find(params[:event_id])
@bookings =@event.bookings.paginate(page: params[:page], per_page: 5)
end
和预订指数:
<h2>All Bookings</h2>
<div class="row">
<div class="col-md-10">
<table class="table">
<thead>
<tr>
<th>Buyer Name</th>
<th>Email Address</th>
<th>Ticket Type</th>
<th>No. of Tickets</th>
<th>Amount</th>
<th></th>
</tr>
</thead>
<tbody>
<% @event.bookings.each do |booking| %>
<tr>
<td><%= booking.buyer_name %></td>
<td><%= booking.email %></td>
<td><% unless booking.ticket.blank? %>
<%= booking.ticket.ticket_name rescue nil %>
<% else %>
No Ticket
<% end %>
</td>
<td><%= booking.order_quantity %></td>
<td><% unless booking.ticket.blank? %>
<%= number_to_currency(booking.total_amount) %>
<% else %>
No Amount
<% end %>
</td>
<td><%= link_to "Delete", event_booking_path(@event, booking), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-link" %></td>
<% end %>
</tr>
</table>
</div>
</div>
<%= will_paginate @bookings %>
<%= link_to "Back to Event", event_path(@event), class: "btn btn-link" %>
<%= link_to "All Bookings", event_bookings_path(@event), class: "btn btn-link" %>
当我将鼠标悬停在分页链接上时,会保留正确的网址结构。我使用的桌子是否有机会挡住?
答案 0 :(得分:1)
分页的事件列表存储在@bookings
变量中,但是在您的表中,您正在迭代@event.bookings
集合,该集合将被取消激活。
更改此
<% @event.bookings.each do |booking| %>
到这个
<% @bookings.each do |booking| %>