我正在开发一个新的rails应用程序的管理部分,我正在尝试设置一些路线来“正确”做事。我有以下控制器:
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
在views / admin / blogs / 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>
我哪里出错了,为什么?
答案 0 :(得分:10)
您的删除链接应以_path:
结尾<%= link_to 'Delete', admin_blog_path(blog), :method => :delete %>
答案 1 :(得分:2)
我假设您正在使用rails 2.0.x,因此您生成路由的方式是 __Path
admin_blog_path(blog)
如果您使用之前的版本,我认为它只是
blog_path(blog)
答案 2 :(得分:1)
旁注: 我还看到你的控制器定义如下:
class Admin::BlogsController < ApplicationController
不应该是这样的吗?
class Admin::BlogsController < Admin::ApplicationController