我一直很困惑为什么我的 rails 应用程序渲染了错误的部分。我有两个部分,每个都与不同的控制器(邀请和客人控制器)相关。第一部分列出了发送给用户的邀请数量,第二部分列出了已确认邀请的用户。此外,第二部分还允许人们查看已确认客人的简单资料。
发生的情况是,当我访问与来宾控制器相关的链接时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>