我是铁路上的新手并且在尝试在我的控制器上添加新方法时遇到错误:(
我在管理员路径下有一个控制器;
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
为什么我得到这个错误。我可以对根路径上的其他控制器使用第一个声明。
答案 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处查看。