RoR:嵌套的名称空间路由,未定义的方法错误
时间:2020-03-06 14:55:26 来源:igfitidea点击:
我正在研究新的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>
我要去哪里错了,为什么?
解决方案
我假设我们使用的是Rails 2.0.x,所以生成路线的方式是
__小路
admin_blog_path(blog)
如果我们使用的是以前的版本,我认为这只是
blog_path(blog)
删除链接应以_path结尾:
<%= link_to 'Delete', admin_blog_path(blog), :method => :delete %>
边注:
我还看到控制器是这样定义的:
class Admin::BlogsController < ApplicationController
难道不是这样吗?
class Admin::BlogsController < Admin::ApplicationController