Rails 嵌套资源路由错误

兰德尔布莱克

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

resources :users do
  resources :pages
end

这是我的minitest“访问新用户页面”系统测试:

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_path不是这个嵌套资源的正确路径pages#new的正确路径new_user_page_path(@user)(这是将我带到new.html.erb的路径)。pages#create的正确路径是对user_pages_path(@user)new.html.erb应该 POST 到的页面)的 POST。但是我找不到任何调用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.html.erb:

<%= 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_path在哪里被调用,所以我无法修复那个错误。任何帮助表示赞赏。

瓦西里萨

您需要更改表单代码,从中调用 page_path。应该

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

表单,嵌套资源和路由错误Rails 4

来自分类Dev

嵌套资源的Rails路由索引

来自分类Dev

嵌套资源时的Rails路由

来自分类Dev

嵌套资源的Rails路由索引

来自分类Dev

Rails子资源路由错误

来自分类Dev

Rails:为嵌套资源路由助手

来自分类Dev

Rails 4-嵌套资源路由

来自分类Dev

嵌套资源的Rails路由和自定义路由

来自分类Dev

Rails API路由资源错误响应

来自分类Dev

Rails嵌套资源未知属性错误

来自分类Dev

Rails中的嵌套路由错误

来自分类Dev

在Rails 4中未为嵌套资源检测到路由

来自分类Dev

Rails路由-嵌套资源URL的上下文

来自分类Dev

Rails中子资源的路由

来自分类Dev

Rails路由到资源

来自分类Dev

Rails中子资源的路由

来自分类Dev

Rails嵌套资源参数

来自分类Dev

嵌套资源的Rails路线

来自分类Dev

Rails嵌套资源创建

来自分类Dev

Rails资源深度嵌套

来自分类Dev

3种模型的Rails 4嵌套资源错误

来自分类Dev

Rails在嵌套资源中循环时选择了错误的路线

来自分类Dev

为create操作创建的Rails 4嵌套资源错误

来自分类Dev

嵌套路由错误Ember.JS和Rails

来自分类Dev

Rails ActiveAdmin路由新资源

来自分类Dev

Rails ActiveAdmin路由新资源

来自分类Dev

如何从Rails中的嵌套资源路由?在UsersController#show中获取“ ActiveRecord :: RecordNotFound”

来自分类Dev

Rails 4嵌套资源,但没有公开父级的RESTful路由?

来自分类Dev

Rails为什么在多个位置创建具有相同参数的嵌套资源路由?