Ruby on rails Rails嵌套资源路由错误

Ruby on rails Rails嵌套资源路由错误,ruby-on-rails,minitest,nested-resources,Ruby On Rails,Minitest,Nested Resources,我有一个嵌套资源的路由错误。以下是我的嵌套路由: resources :users do resources :pages end 这是我的小测试访问新用户页面系统测试: test "visit new user page path" do user = User.create visit new_user_page_path(user) assert_selector "h1", text: "Page" end 此操作失败,出现以下错误: Error: PagesTest

我有一个嵌套资源的路由错误。以下是我的嵌套路由:

resources :users do
  resources :pages
end
这是我的小测试访问新用户页面系统测试:

test "visit new user page path" do
  user = User.create
  visit new_user_page_path(user)
  assert_selector "h1", text: "Page"
end
此操作失败,出现以下错误:

Error:
PagesTest#test_visit_new_user_page_path:
ActionView::Template::Error: undefined method `pages_path' for #<#<Class:0x00007fa0299dfa28>:0x00007fa02aa23df8>
Did you mean?  image_path
app/views/pages/_form.html.erb:1:in `_app_views_pages__form_html_erb__3658586168370814469_70162960780560'
app/views/pages/new.html.erb:3:in `_app_views_pages_new_html_erb__3548077654233884011_70162934875400'
我意识到pages\u path不是这个嵌套资源的正确路径。页面新建的正确路径是新建用户页面_path@user这是我访问new.html.erb的路径。pagescreate的正确路径是用户页面的POST_path@usernew.html.erb应该发布到哪个页面。但我找不到调用pages_path的任何地方。错误表示正在new.html.erb和_form.html.erb中调用它。这是那些页面。首先,new.html.erb:

<h1>New Page</h1>

<%= render 'form', page: @page %>
<%= link_to 'Back', user_pages_path(@page) %>
<%= form_with(model: page, local: true) do |form| %>
  <% if page.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(page.errors.count, "error") %> prohibited this page from being saved:</h2>

      <ul>
      <% page.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :title %>
    <%= form.text_field :title, id: :page_title %>
  </div>

  <div class="field">
    <%= form.label :content %>
    <%= form.text_area :content, id: :page_content %>
  </div>

  <div class="field">
    <%= form.label :user_id %>
    <%= form.text_field :user_id, id: :page_user_id %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>
和_form.html.erb:

<h1>New Page</h1>

<%= render 'form', page: @page %>
<%= link_to 'Back', user_pages_path(@page) %>
<%= form_with(model: page, local: true) do |form| %>
  <% if page.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(page.errors.count, "error") %> prohibited this page from being saved:</h2>

      <ul>
      <% page.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :title %>
    <%= form.text_field :title, id: :page_title %>
  </div>

  <div class="field">
    <%= form.label :content %>
    <%= form.text_area :content, id: :page_content %>
  </div>

  <div class="field">
    <%= form.label :user_id %>
    <%= form.text_field :user_id, id: :page_user_id %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

我不知道调用pages\u path的位置,因此无法修复该错误。非常感谢您的帮助。

您需要更改表单代码,页面路径将从中调用。应该是

<%= form_with(model: [ @user, @page ]) do |form| %>

在这种情况下,将正确设置路线

谢谢瓦西里萨。我太专注于思考这是一个路由问题,我没有意识到这真的是一个表单助手问题。啊-