Rails アプリが間違ったパーシャルをレンダリングしている理由に困惑しています。2 つのパーシャルがあり、それぞれが異なるコントローラー (招待とゲスト コントローラー) に関連しています。1 つはユーザーに送信された招待の数を部分的にリストし、2 番目の部分は招待を確認したユーザーをリストします。さらに、2 番目の部分では、確認済みのゲストの簡単なプロフィールを確認することもできます。
何が起こっているかというと、ゲスト コントローラーevents/1/guests/
に関連するリンクにアクセスすると、ゲスト プロファイルに関連する部分が表示されることを期待しています。代わりに、招待コントローラーに関連するパーシャルがレンダリングされます。招待とゲスト コントローラーはどちらも、イベントのネストされたリソースです。
以下は、私が取り組んできたコードです。ありがとう!
ルート
resources :events, only: [:new, :show, :create] do
resources :invitations, only: [:new, :create, :show]
resources :guests, only: :show
end
match '/events/:id/guests', to: 'guests#show'
ゲストコントローラー
def show
@event = Event.find_by_id(params[:id])
@guestlist = @event.invitations.where(accepted: true)
end
ビュー/ゲスト/show.html.erb
<% provide(:title, @event.eventname + " Guest List") %>
<h1> Guest list for <%= @event.eventname %> </h1>
<% if @event.invitations.any? %>
<%= render @guestlist %>
<% end %>
ビュー/ゲスト/_guestlist.html.erb
<li>
<%= guestlist.name %> | <%= guestlist.occupation %> |
<%= guestlist.interests %>
</li>
代わりに、次のパーシャルがレンダリングされています。
ビュー/招待状/_invitation.html.erb
<li>
<%= invitation.name %> | <%= invitation.email %> |
<% if invitation.accepted == true %> <%= "Confirmed" %> <% else %> <%= "Pending" %> <% end %>
</li>