在我的routes.rb 文件中,我有这条路线:
resources :profiles
在我的控制器规格中,我有这样的路径:
profiles_path
new_profile_path
等等
现在我必须将其移至名称空间内。那么新路线是:
namespace :admin do
resources :profiles
end
然后我开始使用它如下:
admin_profiles_path
这条路径在我的功能规格中运行良好。但问题是,当我在控制器规格中使用它时,我收到以下错误:
ActionController::UrlGenerationError:
No route matches {:action=>"/admin/profiles", :controller=>"profiles", :dir=>"asc", :order=>"name"}
但是,当我尝试检查此控制器的路线时,我得到了正确的路线:
admin_profiles GET /admin/profiles(.:format) admin/profiles#index
为什么它指向配置文件操作而不是索引操作。我做错了什么?
运行时
rails routes
然后这条线
admin_profiles GET /admin/profiles(.:format) admin/profiles#index
^^^^^^^^^^^^^^
告诉您路线名称已更改,因为您的名称用
admin
分隔。
您现在必须使用
profiles_path
(或 new_profile_path
),而不是 admin_profiles_path
(或 new_admin_profile_path
)。
并将按照 Ruby on Rails 约定将请求路由到
index
的 Admin::ProfilesController
方法。