Rails - 命名路线在控制器规范中不起作用

问题描述 投票:0回答:1

在我的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

为什么它指向配置文件操作而不是索引操作。我做错了什么?

ruby-on-rails ruby rspec
1个回答
2
投票

运行时

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
方法。

© www.soinside.com 2019 - 2024. All rights reserved.