我試圖添加一個自定義操作到設計的註冊控制器,它允許用戶更改他們的密碼(我不能使用默認registrations#edit
,因爲我需要一個窗體來更改只有密碼,而不是電子郵件/用戶名)。我在下面寫的實現工作在開發模式下,但當我測試控制器時出現此錯誤。ActionController :: RoutingError當測試自定義設計控制器
Failure/Error: get 'password'
ActionController::RoutingError:
No route matches {:controller=>"registrations", :action=>"password"}
有我的代碼(我試圖跳過不相關的部分)
spec/controllers/registrations_controller_spec.rb
describe RegistrationsController do
include Devise::TestHelpers
before :each do
request.env["devise.mapping"] = Devise.mappings[:users]
end
describe "GET 'password'" do
it "..." do
# The problem is here,
get 'password' # it raises ActionController::RoutingError
end
end
end
app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
# ...
def password
end
end
config/routes.rb
devise_for :users, path: 'account',
controllers: { registrations: 'registartions' },
skip: [:registartions, :sessions]
devise_scope :user do
# ...
scope '/account' do
get 'password' => 'devise/registartions#password', as: "change_password
do
end
spec_helper.rb
# ...
RSpec.configure do |config|
# ...
config.include Devise::TestHelpers, :type => :controller
end