Rails帮助构建管理区域 – 路由问题

我正在建立一个管理区域。

在app / controllers中

application_controller.rb public_controller.rb admin_controller.rb kategoris_controller.rb 

在app / controllers / admin中

 kategoris_controller.rb 

我的路线档案:

 resources :kategoris namespace :admin do resources :kategoris end 

我的kategori索引文件在app / views / admin / kategories / index中

 

Listing kategoris

Navn
'Are you sure?', :method => :delete %>

我的kategori控制器在Admin / kategoris_controller.rb中

 class Admin::KategorisController  @kategoris } end end # GET /kategoris/1 # GET /kategoris/1.xml def show @kategori = Kategori.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @kategori } end end # GET /kategoris/new # GET /kategoris/new.xml def new @kategori = Kategori.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @kategori } end end # GET /kategoris/1/edit def edit @kategori = Kategori.find(params[:id]) end # POST /kategoris # POST /kategoris.xml def create @kategori = Kategori.new(params[:kategori]) respond_to do |format| if @kategori.save format.html { redirect_to(@kategori, :notice => 'Kategori was successfully created.') } format.xml { render :xml => @kategori, :status => :created, :location => @kategori } else format.html { render :action => "new" } format.xml { render :xml => @kategori.errors, :status => :unprocessable_entity } end end end # PUT /kategoris/1 # PUT /kategoris/1.xml def update @kategori = Kategori.find(params[:id]) respond_to do |format| if @kategori.update_attributes(params[:kategori]) format.html { redirect_to(@kategori, :notice => 'Kategori was successfully updated.') } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @kategori.errors, :status => :unprocessable_entity } end end end # DELETE /kategoris/1 # DELETE /kategoris/1.xml def destroy @kategori = Kategori.find(params[:id]) @kategori.destroy respond_to do |format| format.html { redirect_to(kategoris_url) } format.xml { head :ok } end end end 

我的Admin控制器在views / admin / admin_controller.rb中

 class Admin::AdminController < ApplicationController def index end end 

当我访问http:// localhost:3000 / admin / kategoris时出现以下错误:

 ActionController::RoutingError in Admin/kategoris#index Showing C:/Rails/konkurranceportalen/app/views/admin/kategoris/index.html.erb where line #14 raised: No route matches {:action=>"show", :controller=>"kategoris", :id=>#} Extracted source (around line #14): 11:  12:  13:  14:  15:  16: <%= l 

但我能够在http:// localhost:3000 / admin / kategoris / new上创建一个新的然后我重定向到http:// localhost:3000 / kategoris / name-of-new-kategori而不是http:/ /本地主机:3000 /管理/ kategoris /名称-的-新驾驶员学校

开发日志:

 Started GET "/admin/kategoris" for 127.0.0.1 at 2011-03-03 16:17:12 +0100 Processing by Admin::KategorisController#index as HTML [1m[36mKategori Load (0.0ms)[0m [1mSELECT `kategoris`.* FROM `kategoris`[0m Rendered admin/kategoris/index.html.erb within layouts/application (15.0ms) Completed in 160ms ActionView::Template::Error (No route matches {:action=>"show", :controller=>"admin/kategoris", :id=>#}): 11:  12:  13:  14:  15:  16:  'Are you sure?', :method => :delete %> 17:  app/views/admin/kategoris/index.html.erb:14:in `block in _app_views_admin_kategoris_index_html_erb__324114984_51120168__127142517' app/views/admin/kategoris/index.html.erb:11:in `each' app/views/admin/kategoris/index.html.erb:11:in `_app_views_admin_kategoris_index_html_erb__324114984_51120168__127142517' app/controllers/admin/kategoris_controller.rb:7:in `index' Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms) Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (39.0ms) Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (91.0ms) 

耙路线:

 >"update", :controller=>"reklamers"} DELETE /reklamers/:id(.:format) {:action= >"destroy", :controller=>"reklamers"} konkurrencer_index GET /konkurrencer(.:format) {:action= >"index", :controller=>"konkurrancers"} POST /konkurrencer(.:format) {:action= >"create", :controller=>"konkurrancers"} new_konkurrencer GET /konkurrencer/new(.:format) {:action= >"new", :controller=>"konkurrancers"} edit_konkurrencer GET /konkurrencer/:id/edit(.:format) {:action= >"edit", :controller=>"konkurrancers"} konkurrencer GET /konkurrencer/:id(.:format) {:action= >"show", :controller=>"konkurrancers"} PUT /konkurrencer/:id(.:format) {:action= >"update", :controller=>"konkurrancers"} DELETE /konkurrencer/:id(.:format) {:action= >"destroy", :controller=>"konkurrancers"} statistik /statistik(.:format) {:control ler=>"public", :action=>"statistik"} admin_reklamers GET /admin/reklamers(.:format) {:action= >"index", :controller=>"admin/reklamers"} POST /admin/reklamers(.:format) {:action= >"create", :controller=>"admin/reklamers"} new_admin_reklamer GET /admin/reklamers/new(.:format) {:action= >"new", :controller=>"admin/reklamers"} edit_admin_reklamer GET /admin/reklamers/:id/edit(.:format) {:action= >"edit", :controller=>"admin/reklamers"} admin_reklamer GET /admin/reklamers/:id(.:format) {:action= >"show", :controller=>"admin/reklamers"} PUT /admin/reklamers/:id(.:format) {:action= >"update", :controller=>"admin/reklamers"} DELETE /admin/reklamers/:id(.:format) {:action= >"destroy", :controller=>"admin/reklamers"} admin_kategoris GET /admin/kategoris(.:format) {:action= >"index", :controller=>"admin/kategoris"} POST /admin/kategoris(.:format) {:action= >"create", :controller=>"admin/kategoris"} new_admin_kategori GET /admin/kategoris/new(.:format) {:action= >"new", :controller=>"admin/kategoris"} edit_admin_kategori GET /admin/kategoris/:id/edit(.:format) {:action= >"edit", :controller=>"admin/kategoris"} admin_kategori GET /admin/kategoris/:id(.:format) {:action= >"show", :controller=>"admin/kategoris"} PUT /admin/kategoris/:id(.:format) {:action= >"update", :controller=>"admin/kategoris"} DELETE /admin/kategoris/:id(.:format) {:action= >"destroy", :controller=>"admin/kategoris"} admin_konkurrancers GET /admin/konkurrancers(.:format) {:action= >"index", :controller=>"admin/konkurrancers"} POST /admin/konkurrancers(.:format) {:action= >"create", :controller=>"admin/konkurrancers"} new_admin_konkurrancer GET /admin/konkurrancers/new(.:format) {:action= >"new", :controller=>"admin/konkurrancers"} edit_admin_konkurrancer GET /admin/konkurrancers/:id/edit(.:format) {:action= >"edit", :controller=>"admin/konkurrancers"} admin_konkurrancer GET /admin/konkurrancers/:id(.:format) {:action= >"show", :controller=>"admin/konkurrancers"} PUT /admin/konkurrancers/:id(.:format) {:action= >"update", :controller=>"admin/konkurrancers"} DELETE /admin/konkurrancers/:id(.:format) {:action= >"destroy", :controller=>"admin/konkurrancers"} root /(.:format) {:control ler=>"public", :action=>"index"} C:\Rails\konkurranceportalen> 

您需要重构您的url助手以包含admin命名空间。 在错误的情况下,它是

 <%= link_to 'Show', admin_kategori_path(kategori) %> 

控制器中的重定向也是如此

 #in AdminController#create redirect_to(admin_kategori_path(@kategori)) 

要从控制台中查看所有生成的路由助手

 rake routes