Моя заявка была написана на английском языке, и все было хорошо. Вчера я начал играть с поддержкой интернационализации Rails.I18n. Все хорошо. Когда я просматриваю http://localhost:3000/jp/discounts
, это на японском языке, а 'http://localhost:3000/discounts' дает мне английскую локаль по умолчанию (если локаль не указана).
Вот мой route.rb, и, как вы можете видеть, пространство имен администратора не локализовано:
scope '(:locale)' do
resources :discounts do
resource :map, only: :show
collection do
get :featured_city
end
end
end
namespace :admin do
resources :users do
collection do
get :members
get :search
end
end
end
Однако мой RSpec начинает отказывать.
Failure/Error: it { should route_to('admin/users#edit', id: '1') }
The recognized options <{"action"=>"edit", "controller"=>"users", "locale"=>"admin", "id"=>"1"}>
did not match <{"id"=>"1", "controller"=>"admin/users", "action"=>"edit"}>,
difference: <{"controller"=>"admin/users", "locale"=>"admin"}>.
<{"id"=>"1", "controller"=>"admin/users", "action"=>"edit"}> expected but was
<{"action"=>"edit", "controller"=>"users", "locale"=>"admin", "id"=>"1"}>
Все тесты, связанные с администратором, имеют такую проблему. Как я могу решить это? Он отлично работает в разработке.
Вот другой код, связанный с локалью:
application_controller.rb
def default_url_options
{ locale: I18n.locale }
end
конфиг / Инициализаторы / i18n.rb
#encoding: utf-8
I18n.default_locale = :en
LANGUAGES = [
['English', 'en'],
["Japanese", 'jp']
]