查看用户所做的所有预订

时间:2018-03-26 00:19:20

标签: ruby-on-rails ruby

我试图查看用户所做的所有预订。我仍然需要一个页面,其中所有预订都可供系统的其他用户使用。我已经设置了另一个名为预订的页面,其中包含一个控制器,可以尝试仅查看用户预订。我试图看看其他问题但是还没有能够解决这个问题。

目前在我的预订控制器中我有

def index
    @user = User.find(session[:user_id])
    @reservations = Reservation.find_by_id(@user)
end

在我的观看预订index.html.erb我有

<h1> Viewing All Reservations </h1>


<table class="table table-striped">
 <thead>
  <tr>
    <th>ID</th>
    <th>Vehicle ID</th>
    <th>User ID</th>
    <th>Start Date</th>
    <th>End Date</th>
    <th>Costs</th>
  </tr>
 </thead>
 <tbody>
 <% @reservations.each do |reservation| %>
  <tr>
    <td><%= reservation.id %></td>
    <td><%= reservation.user_id %></td>
    <td><%= reservation.vehicle_id %></td>
    <td><%= reservation.startDate %></td>
    <td><%= reservation.endDate %></td>
    <td><%= reservation.costs %></td>
  </tr>
 <% end %>
</tbody>
</table>

请让我知道我哪里出错了。

1 个答案:

答案 0 :(得分:2)

find_by只返回一条记录。您应该使用where

def index
  @user = User.find(session[:user_id])
  @reservations = Reservation.where(user_id: @user.id)
end

您可以使用关联记录(假设用户为has_many :reservations

def index
  @user = User.find(session[:user_id])
  @reservations = @user.reservations
end

如果您希望使用相同的方法来显示预订或所有预订,则可以添加参数

def index
  if params[:all]
    @reservations = Reservation.all
  else
    @user = User.find(session[:user_id])
    @reservations = @user.reservations
  end
end