我试图查看用户所做的所有预订。我仍然需要一个页面,其中所有预订都可供系统的其他用户使用。我已经设置了另一个名为预订的页面,其中包含一个控制器,可以尝试仅查看用户预订。我试图看看其他问题但是还没有能够解决这个问题。
目前在我的预订控制器中我有
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>
请让我知道我哪里出错了。
答案 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