gpt4 book ai didi

ruby-on-rails - 需要向根路径添加国际化 - Ruby on Rails 3.2

转载 作者:行者123 更新时间:2023-12-04 05:57:03 25 4
gpt4 key购买 nike

我希望我的路由格式为/locale/route 而不是/route?locale=en 等。

我在 application_controller.rb 中有以下内容

before_filter :set_locale

def default_url_options(options={})
{ :locale => I18n.locale }
end

private
def set_locale
I18n.locale = (params[:locale] if params[:locale].present?) || cookies[:locale] || 'en'
cookies[:locale] = I18n.locale if cookies[:locale] != I18n.locale.to_s
end

我在 routes.rb 中有这个
scope "/:locale" do
all my routes except for the root
end

对于范围语句之外的根路径,我有以下代码。当我在范围语句中有这些时,它将语言环境设置为 404,但没有找到 404 的语言环境文件。
match '/:locale' => 'landing#index'
root to: 'landing#index'

这是我的标题 View 中的代码,人们可以在其中更改语言:
<p class="locale-line"><span class="english-link"><%= link_to_unless_current "#{t :english}", locale: "en" %></span><%= link_to_unless_current "#{t :french}", locale: "fr" %></p>

这是使用返回根路径的图像的链接的代码:
<%= link_to image_tag("menu-home.jpg", alt: "My Home Page"), root_path %>

<%= link_to image_tag("menu-home.jpg", alt: "My Home Page"), root_url %>

我能够成功获取范围语句中的路由以根据需要显示路由。当一个人最初显示网站并单击页面顶部的任一语言链接时,根路径显示为/locale。但是,我的根路径不能像我想要的那样使用图像标签。两个示例都使用/?locale=en 或/?locale=fr 显示根路径。

我已经检查了 guides.rubyonrails.org 和 edgeguides.rubyonrails.org,但没有找到任何示例说明如何为根路径编写 link_to 语句,它将显示格式为/locale 的语言环境。

任何帮助,将不胜感激。

最佳答案

routes.rb 试试这个

match '/:locale' => 'landing#index', :as => 'locale_root'

然后像这样链接到它:
<%= link_to image_tag("menu-home.jpg"), locale_root_path %>

或者你可能需要做
<%= link_to image_tag("menu-home.jpg"), locale_root_path(:locale => I18n.locale) %>

(我删除了 alt 参数只是为了节省空间,以便所有内容都适合页面。)

关于ruby-on-rails - 需要向根路径添加国际化 - Ruby on Rails 3.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com