未定义的方法`page_path'rails
undefined method `page_path' rails
Rails5.1.3
我的路由文件中有一组带命名空间的路由 rails:
Rails.application.routes.draw do
get 'page/index'
namespace :admin do
resources :pages
resources :sections
end
get '*page', to: 'page#index'
root 'page#index'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
然后我有一个页面控制器:
class Admin::PagesController < ApplicationController
def new
render layout: 'admin'
end
def index
@pages = Page.all
render layout: 'admin'
end
def edit
@page = Page.find(params[:id])
render layout: 'admin'
end
end
如您所见,我已经定义了我的编辑方法,在该方法中我获取了相应 ID 的页面(相当典型)。
在我的 HTML 中,我有:
<h1>Edit page</h1>
<%= form_with(model: @page) do |form| %>
<p>
<%= form.label :slug %><br>
<%= form.text_field :slug %>
</p>
<p>
<%= form.label :title %><br>
<%= form.text_area :title %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
根据 rails 指南,但我收到错误:
undefined method `page_path' for #<#>
:0x007fbdfd15f000>
Did you mean? image_path
Extracted source (around line #3):
Edit page
<%= form_with(model: @page) do |form| %>
<%= form.label :slug %>
我怀疑是命名空间的问题,我该如何解决?
您还没有命名路线。尝试:
get 'page/index', as: 'page'
如果您 运行 从您的终端搜索路由,它会为您提供所有路由名称、参数和名称空间的非常有用的细分
我没有看到您在路线中为 'page_path' 定义路线的位置。
您已定义 'admin_page_path'。
使用 'rails routes' 查看您的路线是如何映射的。
此外,在您的控制器中,您可以在 class 定义之后使用 'layout "admin"' 来为所有操作使用该布局。
你是对的,是关于命名空间的:
<%= form_with(model: [ :admin, @page ]) do |form| %>
Rails5.1.3
我的路由文件中有一组带命名空间的路由 rails:
Rails.application.routes.draw do
get 'page/index'
namespace :admin do
resources :pages
resources :sections
end
get '*page', to: 'page#index'
root 'page#index'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
然后我有一个页面控制器:
class Admin::PagesController < ApplicationController
def new
render layout: 'admin'
end
def index
@pages = Page.all
render layout: 'admin'
end
def edit
@page = Page.find(params[:id])
render layout: 'admin'
end
end
如您所见,我已经定义了我的编辑方法,在该方法中我获取了相应 ID 的页面(相当典型)。
在我的 HTML 中,我有:
<h1>Edit page</h1>
<%= form_with(model: @page) do |form| %>
<p>
<%= form.label :slug %><br>
<%= form.text_field :slug %>
</p>
<p>
<%= form.label :title %><br>
<%= form.text_area :title %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
根据 rails 指南,但我收到错误:
undefined method `page_path' for #<#> :0x007fbdfd15f000> Did you mean? image_path Extracted source (around line #3):
Edit page
<%= form_with(model: @page) do |form| %>
<%= form.label :slug %>
我怀疑是命名空间的问题,我该如何解决?
您还没有命名路线。尝试:
get 'page/index', as: 'page'
如果您 运行 从您的终端搜索路由,它会为您提供所有路由名称、参数和名称空间的非常有用的细分
我没有看到您在路线中为 'page_path' 定义路线的位置。
您已定义 'admin_page_path'。
使用 'rails routes' 查看您的路线是如何映射的。
此外,在您的控制器中,您可以在 class 定义之后使用 'layout "admin"' 来为所有操作使用该布局。
你是对的,是关于命名空间的:
<%= form_with(model: [ :admin, @page ]) do |form| %>