0

Friendly_id gem と globalize を統合しましたが、特定のロケールでスラッグの翻訳があれば問題なく動作します。

しかし、私が達成したいのは、スラッグが一部のロケールの翻訳テーブルにない場合に備えて、スラッグのデフォルトの翻訳を使用することです。

したがって、スラッグが埋められているマスター ロケール MA があり、それが欠落している EN ロケールがあるとします。もし私がEN版に行くなら、スラッグのMA版を見たいです。

これを行う方法はありますか?

ありがとう、ミロスラフ

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

FriendlyID とグローバリゼーションにこのアドオン gem を使用すると、これが処理されると思います: https://github.com/norman/friendly_id-globalize/blob/master/README.md

デフォルトのロケールを処理します。ドキュメントを参照するだけですが、それでうまくいくと思います。

于 2015-09-06T18:07:18.257 に答える