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

时间:2012-12-01 23:26:19

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我是铁路上的新手并且在尝试在我的控制器上添加新方法时遇到错误:(
我在管理员路径下有一个控制器;

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是这样的时候,我得到的错误=&gt;没有路线匹配{:action =&gt;“show_my_action”,:controller =&gt;“admin / my_users”}

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您正在向RESTful操作添加操作,如果您未指定集合或成员,则路由无法知道您想要的内容。如果你这样定义:

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处查看。