2008-09-30 84 views
4

我正在開發新的rails應用程序的管理部分,我試圖設置一些路徑來「正確地」執行操作。我有以下控制器:RoR:嵌套的命名空間路由,未定義的方法錯誤

class Admin::BlogsController < ApplicationController 
    def index 
    @blogs = Blog.find(:all) 
    end 

    def show 
    @blog = Blog.find(params[:id]) 
    end 

    ... 
end 

在routes.rb中:

map.namespace :admin do |admin| 
    admin.resources :blogs 
end 
的意見/管理/博客/ index.html.erb

<% for blog in @blogs %> 
    <%= link_to 'Delete', admin_blog(blog), :method => :delete 
<% end %> 

我已覈實路線存在:

admin_blogs GET /admin/blogs {:action => "index", :controller=>"admin/blogs"} 
admin_blog GET /admin/blogs/:id {:action => "show", :controller => "admin/blogs"} 
.... 

但是當我嘗試查看http://localhost:3000/admin/blogs我得到這個錯誤:

undefined method 'admin_blog' for #<ActionView::Base:0xb7213da8> 

我要去哪裏錯了,爲什麼?

回答

10

您刪除鏈接應該_path結束:

<%= link_to 'Delete', admin_blog_path(blog), :method => :delete %> 
+0

或_url!/10char – 2009-03-27 08:28:21

2

我假設你正在使用的軌道2.0.x的這樣的方式你生成一個途徑是 __Path

admin_blog_path(blog) 

,如果你是騎以前的版本我認爲這只是

blog_path(blog) 
1

旁註: 我也看到你的控制器是這樣定義的:

class Admin::BlogsController < ApplicationController 

不應該是這樣嗎?

class Admin::BlogsController < Admin::ApplicationController 
相關問題