【问题标题】:Rails locale changing but paths in links stay the sameRails 语言环境发生变化,但链接中的路径保持不变
【发布时间】:2017-12-07 20:58:56
【问题描述】:

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

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

当我单击任何链接时,param[:locale] 会更改,并且所有翻译都显示正常。但是,当我单击任何 url 时,链接将保留在当前语言环境中。它不会用新的 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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    改变路线

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

    它会给你类似 fr/admin 这样的路由

    那么不要忘记视图中的路线

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

    或管理员路由

    【讨论】:

    • 感谢您的建议,我已经尝试过了,很遗憾,它不起作用。
    • 它不起作用,因为您正在重定向到根目录。我希望它保持在同一页面上。我也试过 url_for()。
    【解决方案2】:

    过了一会儿,我意识到我的管理控制器是从应用程序控制器扩展而来的。我在两个控制器中都有before_action :set_locale。由于某种原因,这弄乱了语言切换。不知道为什么翻译正确加载但链接没有更新。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2014-10-09
      • 2021-09-19
      相关资源
      最近更新 更多