1

我有一个用于管理的控制器Users和一个用于Reservations.
显示特定用户的所有预订的代码应位于何处?
这是在User控制器还是Reservation控制器中完成?

4

3 回答 3

2

这取决于。如果您正在处理嵌套资源(换句话说,您希望能够访问类似的东西/users/4321/reservations),您应该看看这个 Railscast,它在 Rails 2 中已经过时但仍然有用。

您可能想要的是将代码放在操作的ReservationsController下方index,但这取决于您打算做什么。尽管如此,这样的事情还是有道理的:

class ReservationsController < ApplicationController
  def index
    @reservations = Reservations.where(user: params[:user_id])
  end
end
于 2012-12-23T20:45:58.713 回答
0

我认为你在这里有点偏离基础......你的模型应该有一个关联;例如:

User < ActiveRecord::Base
 has_many :reservations
end

您的 UserController#show 可能是

def show
 @user = User.find(params["id")
end

然后视图将具有以下内容:

<ul>
    <% @user.reservations.each do |r| %>
    <li><%= r.details =%></li>
    <% end %>
</ul>

该关联将其打开,以便您可以从中调用所需的对象。您可以@reservation.user.name在预订视图中轻松显示

于 2012-12-23T20:47:42.497 回答
0

显示特定用户的所有预订的代码应位于何处?

这取决于。如果您想在他的详细信息页面 (/users/42) 上显示特定用户的预订,那么 UsersController#show 操作是完全合理的。如果你想创建一个搜索表单,那么它基本上是 ReservationsControler#index 操作的过滤器。

于 2012-12-23T20:47:43.653 回答