0

我已经集成了friendly_id gem 和globalize,如果我在特定的语言环境中有slug 的翻译,它就可以正常工作。

但是我想要实现的是对 slug 使用默认翻译,以防某些语言环境的翻译表中缺少它。

因此,假设我有一个主语言环境 MA,其中填充了 slug,并且我有一个 EN 语言环境,但它丢失了。如果我去 EN 版,我想看 MA 版的 slug。

有没有办法做到这一点?

谢谢, 米罗斯拉夫

4

2 回答 2

1

我最终通过编写一个应用程序帮助方法来解决这个问题(其他解决方案对我不起作用)。希望它会帮助某人。如果产品不存在翻译,它将使用主翻译(在创建产品时默认创建),否则使用当前语言环境版本。

# application_helper.rb

def product_url(product)
    if product.translations.pluck(:locale).include?(I18n.locale.to_s)
      admin_translations_product_path(product)
    else
      I18n.with_locale(:ma) { admin_translations_product_path(product) }
    end
end

# index.html.erb
<%= link_to "#{t :button_admin_edit} #{locale.to_s.upcase}", product_url(product) %>
于 2015-09-06T18:31:49.380 回答
0

我相信如果您使用此附加 gem 进行友好 ID 和全球化,这将为您处理:https ://github.com/norman/friendly_id-globalize/blob/master/README.md

它处理默认语言环境。我只是将您推荐给文档,但希望这样做。

于 2015-09-06T18:07:18.257 回答