路由子控制器

时间:2010-06-20 15:29:19

标签: ruby-on-rails

我的路线如下:

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,它不应该。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您的模型@page不知道它正在这样的命名空间中使用。您可以使用rake routes查看管理命名空间的所有路由。您需要手动更改网址路径:

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

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

您更新网页时的另一个示例:

admin_page_path(@page)