私は管理するコントローラーとUsers
別のコントローラーを持っていReservations
ます。
特定のユーザーのすべての予約を表示するコードはどこに配置する必要がありますか?これはコントローラー
で行われますか、それともコントローラーで行われますか?User
Reservation
3 に答える
場合によります。ネストされたリソースを扱っている場合 (つまり、 のようなものにアクセスできるようにしたい場合)、 Rails 2 には古くなっていますが、まだ有用なこの Railscast/users/4321/reservations
を見てください。
おそらくあなたが望むのは、コードをアクションのReservationsController
下に置くindex
ことですが、それはあなたが何を計画しているかによって異なります. それにもかかわらず、次のようなことは理にかなっています。
class ReservationsController < ApplicationController
def index
@reservations = Reservations.where(user: params[:user_id])
end
end
ここでは少しずれていると思います...モデルには関連付けが必要です。例えば:
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
予約ビューで簡単に表示できます
特定のユーザーのすべての予約を表示するコードはどこにありますか?
場合によります。特定のユーザーの詳細ページ (/users/42) に予約を表示したい場合、UsersController#show アクションは完全に合理的です。検索フォームを作成する場合、基本的には ReservationsControler#index アクションに対するフィルターです。