1

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

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 是这样时,我得到错误 => 没有路由匹配 {:action=>"show_my_action", :controller=>"admin/my_users"}

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

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

4

2 回答 2

1

您需要指定操作是针对成员还是集合。如果它在会员上,那么您的 URL 是admin/my_users/:id/show_my_action. 如果它在一个集合上,那么它是admin/my_users/show_my_action. 在这里阅读:http ://edgeguides.rubyonrails.org/routing.html

于 2012-12-02T01:40:18.547 回答
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

您可以查看添加更多 RESTful 操作

于 2012-12-02T01:48:04.560 回答