嵌套路线后缺少路径

Missing path after nesting routes

关于路由嵌套时会发生什么的基本问题。我有一个抱怨缺少路径的表格。我无法弄清楚如何在路由中正确命名路径,或正确更改它正在寻找的路径。

路线如下:

Rails.application.routes.draw do
  resources :users do
    resources :events do
      resources :event_sessions do
        resources :locations
      end
    end
  end
end

表格如下:

<%= form_for @event do |form| %>
...
<% end %>

URLhttp://localhost:3000/users/2/events/new产生异常:

undefined method `event_path`

这里发生了什么?我该如何解决?

您必须提供正确的 form_for 参数,以便表单操作知道资源是如何嵌套的,例如:

<%= form_for [current_user, @event] do |form| %>
...
<% end %>