没有路线匹配错误。这段代码有什么问题?
问题描述:
我在轨道上的新手,却得到了错误,同时尝试我的控制器:(
我下管理路径控制器上添加新的方法。没有路线匹配错误。这段代码有什么问题?
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
答
您需要指定动作是在成员还是集合上。如果它在成员上,那么你的网址是admin/my_users/:id/show_my_action
。如果它在一个集合上,那么它是admin/my_users/show_my_action
。请在此处阅读:http://edgeguides.rubyonrails.org/routing.html