Rails 4 个浅嵌套 UrlGenerationError,缺少必需的键

Rails 4 shallow nesting UrlGenerationError, missing required keys

我第一次尝试浅层嵌套资源,但在使用我的索引路由时遇到了一些麻烦。

routes.rb

resources :sites, shallow: true do
  resources :visits
end

我得到的错误是在 visits#show 页面的后退按钮中:

<%= link_to 'Back', site_visits_path(@site) %>

No route matches {:action=>"index", :controller=>"visits", :site_id=>nil} missing required keys: [:site_id]

在我的VisitsControllerindex动作中我设置@site如下:

@site = Site.find(params[:site_id])

但是它说我的 :site_id 是零,我不确定如何正确设置它。

您可以这样设置:

<%= link_to 'Back', site_visits_path(:site_id => @site.id) %>