Rails 5.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指南,但我收到错误:
未定义的方法`page_path&#39;对于#&lt;#&gt; :0x007fbdfd15f000&GT; 你的意思是? IMAGE_PATH 提取的来源(第3行):
编辑页面
&lt;%= form_with(型号:@page)do | form | %GT;
&lt;%= form.label:slug%&gt;
我怀疑这是由命名空间引起的,我该如何解决?
答案 0 :(得分:2)
你是对的,它是关于命名空间的:
<%= form_with(model: [ :admin, @page ]) do |form| %>
答案 1 :(得分:1)
我看不到你在路线中为'page_path'定义路线的位置。
您已定义'admin_page_path'。
使用'rails routes'查看路线的确切排列方式。
此外,在您的控制器中,您可以在课程定义后使用“layout”admin“'将该布局用于所有操作。
答案 2 :(得分:0)
您尚未命名路线。尝试:
get 'page/index', as: 'page'
如果您从终端运行rake路由,它会为您提供所有路由名称,参数和命名空间的非常有用的细分