2015-09-06 3 views
0

У меня встроенный жемчуг friendly_id и глобализация, и он отлично работает, если у меня есть перевод для slug в конкретной локали.Friendly_id и globalize - используйте перевод по умолчанию для slug, если перевод отсутствует

Но я хочу добиться использования перевода по умолчанию для slug в случае, если в таблице перевода отсутствует какая-либо локаль.

Итак, скажем, у меня есть мастер-локаль MA, где заполнен пул, и у меня есть локаль EN, где она отсутствует. Если я поеду в версию EN, я хочу увидеть версию пули MA.

Есть ли способ, как это сделать?

Спасибо, Мирослав

ответ

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) %> 
0

Я считаю, что это обрабатывается для вас, если вы используете это дополнение драгоценного камня для friendlyid и глобализации: https://github.com/norman/friendly_id-globalize/blob/master/README.md

Он обрабатывает локаль по умолчанию. Я просто отправлю вас к документам, но это, надеюсь, сделает это.

+0

Thanks Tom. Я просмотрел документацию и много раз пробовал, но никто из них не работал для меня. Он отлично работает для загрузки переводов по умолчанию для текстов, если они не существуют на текущем языке, но не для URL-адресов продукта. Наконец, я сделал это с помощью вспомогательного метода, и он работает отлично (но, возможно, есть более элегантное решение). – Miroslav

Смежные вопросы