【问题标题】:I18n routing errorI18n 路由错误
【发布时间】:2016-12-16 21:14:59
【问题描述】:

我正在通过 I18n 在我的应用中实现内部化。

我已更改路由:

    root 'sessions#new'
    get '/signup', to: 'users#new'
    post '/signup', to: 'users#create'
    get '/login', to: 'sessions#new'
    post '/login', to: 'sessions#create'
    delete '/logout', to: 'sessions#destroy'
    resources :users, only: [:new, :show, :create, :index] 

收件人:

  scope "(:locale)", locale: /pl|en/ do
    root 'sessions#new'
    get '/signup', to: 'users#new'
    post '/signup', to: 'users#create'
    get '/login', to: 'sessions#new'
    post '/login', to: 'sessions#create'
    delete '/logout', to: 'sessions#destroy'
    resources :users, only: [:new, :show, :create, :index] 
  end  

将显示从 www.example.com/users?locale=pl 更改为 www.example.com/pl/users

测试时

  test "should redirect show user when not logged in" do
    get user_path(@user)
    assert_not flash.empty?
    assert_redirected_to root_url
  end

我遇到了一个问题。

错误:

UsersControllerTest#test_should_redirect_show_user_when_not_logged_in:
> 
>     ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"users", :locale=>#<User id: 753762654,
> first_name: "Jan", last_name: "Kowalski", password: "test12",
> student_id: "123456", created_at: "2016-12-16 21:02:17", updated_at:
> "2016-12-16 21:02:17", cookies_digest: nil, admin: true>} missing
> required keys: [:id]
>     test/controllers/users_controller_test.rb:16:in `block<class:UsersControllerTest>'

如何在保持这样的 url 的同时解决这个问题:example.com/pl/users ?

【问题讨论】:

    标签: ruby-on-rails ruby internationalization translation


    【解决方案1】:

    你应该在测试中调用user_path时通过你想要的locale

    喜欢这个user_path(@user, locale: :pl)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多