Мой тест
it 'is not allowed to open admin/songs/index' do
get :index
expect(response).to redirect_to(new_admin_session_path)
end
Сбой, и результат
Ожидается, что ответ будет перенаправлением на http://test.host/admins/sing_in?locale=es, но был перенаправлением на http://test.host/admins/sign_in
Моя проблема в том, что он действительно должен перенаправить на 'http://test.host/admins/sign_in" без locale = es.Вот что происходит в браузере.
По какой-то причине Rspec добавляет локаль в new_admin_session_path, а это не то, что мне нужно.
Мой файл rout.rb -
Rails.application.routes.draw do
devise for :admins, controllers: {sessions: 'admins/sessions', registrations: 'admins/registrations'}
namespace :admin do
resources :songs
end
get('admin/home' => 'admin/home#index')
root to: 'home#index'
scope "(:locale)", locale /en|es/ do
get('home' => 'home#index')
get('songs' => 'songs#index')
end
end
Мой файл app / controllers / application_controller.rb имеет
around_action :switch_locale
def switch_locale(&action)
locale = params[:locale] || I18n.default_locale
I18n.with_locale(locale, &action)
end
def default_url_options
{ locale: I18n.locale }
end
Мой файл config / application.rb имеет
config.i18n.default_locale = :es
config.i18n.available_locales = [:en, :es]