2010-06-20 112 views
0

我的路線如下所示:路由子控制器

map.namespace(:admin) do |admin| 
    admin.resources :pages 
end 

和我的控制器名稱如下所示:

class Admin::PagesController < ApplicationController 

和我new.html.erb文件如下所示:

<% form_for(@page) do |f| %> 
    <%= f.error_messages %> 
    <p> 
     <%= f.label :title %> 
     <%= f.text_field :title %> 
    </p> 
    <p> 
     <%= f.label :body %> 
     <%= f.text_area :body %> 
    </p> 
    <p> 
     <%= f.submit "Create" %> 
    </p> 
<% end %> 

<%= link_to 'Back', :action => "index" %> 

但我一直收到以下錯誤:

NoMethodError in Admin/pages#new 

Showing app/views/admin/pages/new.html.erb where line #1 raised: 

undefined method `pages_path' for #<ActionView::Base:0x104528000> 
Extracted source (around line #1): 

1: <% form_for(@page) do |f| %> 
2: <%= f.error_messages %> 
3: <p> 
4:  <%= f.label :title %> 

我不明白爲什麼,因爲我假設路線是正確的。如果我嘗試其他路線,那麼它會工作,直到我嘗試提交表單,然後它認爲它應該帶我回到site.com/pages,它不應該。

任何想法?

回答

3

您的模型@page不知道它在像這樣的名稱空間中使用。您可以使用rake routes查看您的管理員名稱空間的所有路由。您需要手動更改您的網址路徑:

admin_page_path(@page) 

<% form_for(@page) do |f| %> 

<% form_for(@page, :url => admin_pages_path) do |f| %> 

另一個例子,當你更新頁面