没有路线匹配错误。这段代码有什么问题?

问题描述:

我在轨道上的新手,却得到了错误,同时尝试我的控制器:(
我下管理路径控制器上添加新的方法。没有路线匹配错误。这段代码有什么问题?

Admin::MyUsersController < ApplicationController 
before_filter :...... 

def index 
    redirect_to :action => :show_my_action 
end 

def show_my_action 
    ... 
    ... 
end 

我控制器这样的但不是这个正是
在我的routes.rb

namespace "admin" do 
    resources :my_users do 
    get "show_my_action" 
    end 
end 

当我的routes.rb是这样的,即时得到错误=>没有路由匹配{:动作=> “show_my_action”:控制器=> “管理/ my_users”}

namespace "admin" do 
    resources :my_users do 
    get "show_my_action", :on => :collection 
    end 
end 

当我的routes.rb这样然后没有错误:S
为什么即时通讯这个错误。我可以对根路径上的其他控制器使用第一个声明。

如果您未指定集合或成员,则路由无法知道您想要什么,您正在将操作添加到REST式操作。如果你像这样定义:

namespace "admin" do 
    resources :my_users do 
    get "show_my_action" 
    end 
end 

如何航线知道你想要哪条路线:

my_users/show_my_action, or my_users/:id/show_my_action 

所以,你需要指定它的成员或集合:

namespace "admin" do 
    resources :my_users do 
    get "show_my_action", :on => :collection 
    end 
end 

将有路线:my_users/show_my_action和:

namespace "admin" do 
    resources :my_users do 
    get "show_my_action", :on => :member 
    end 
en 

将有路线:my_users/:id/show_my_action

您可以检查Adding More RESTful Actions

您需要指定动作是在成员还是集合上。如果它在成员上,那么你的网址是admin/my_users/:id/show_my_action。如果它在一个集合上,那么它是admin/my_users/show_my_action。请在此处阅读:http://edgeguides.rubyonrails.org/routing.html