Rails区域设置更改但链接中的路径保持不变

时间:2017-12-07 20:58:57

标签: ruby-on-rails ruby ruby-on-rails-5

我有一个多语言应用程序,可以更改链接上的语言,它始终位于页面顶部。

<%= link_to "English", :locale => 'en' %>
<%= link_to "French", :locale => 'fr'  %>

当我点击任何链接时,param [:locale]会发生变化,所有翻译都会显示正常。但是,当我单击任何URL时,链接将保持当前的区域设置。它不会更改新网址的实际路径。

控制器

  before_action :set_locale

  def default_url_options
    { locale: I18n.locale }
  end

  def set_locale
    I18n.locale = params[:locale]
  end

路线

  namespace :admin do
    scope "(:locale)", locale: /en|fr/ do
        // resources
    end
  end

我想在单击链接更改区域设置时,页面中的所有内容都会更改,包括路径。目前它只加载正确的翻译文件,但不更新路径。

谢谢!

2 个答案:

答案 0 :(得分:0)

将路线更改为

scope "(:locale)", locale: /en|fr/ do
  namespace :admin do
    // resources
  end
end

它将为您提供fr fr / admin

等路线

然后不要忘记视图中的路线

<%=link_to 'English', root_path(locale: 'en') %>

或管理员路线

答案 1 :(得分:0)

过了一会儿,我意识到我的应用程序控制器扩展了管理员控制器。我在两个控制器中都有before_action :set_locale。出于某种原因,这与语言切换混淆了。不确定为什么翻译正确加载但链接没有更新。