我有令人敬畏的Globalize3宝石的麻烦。 现在我有两种语言:en和:ru。 并且:ru回归:恩喜欢这个

#/config/initializers/globalize.rb
Globalize.fallbacks = {:ru => [:ru, :en]}

在我的控制器中,我试图通过名称翻译或翻译后备值对翻译记录的整个集合进行排序。 但是with_translations()似乎没有给我这样的机会!

Country.with_translations(:ru).order('country_translations.name ASC')
#this filters out those who have no :ru translations (BUT THEY SHOLD USE FALLBACKS!)

所以要检索我可以传递一系列语言环境的所有记录:

Country.with_translations([:ru, :en]).order('country_translations.name ASC')
#but this completely ruins the sorting order (DAMN NOTHING IS SORTED)

而我想要的唯一简单的事情是获得后备并整理所有东西! 所以我们需要以某种方式获取所有记录,只按可用的名称值排序。

有什么办法吗?

===============>>#1 票数:18 已采纳

通过挖掘Globalize3源解决了这个问题。 它使用with_locales作用域来获取具有适当语言环境的记录。 我只需要它们:

Model.includes(:translations).
       with_locales(I18n.available_locales).
       order('model_translations.name ASC')

希望它会帮助别人!

===============>>#2 票数:3

本来可以留下这个评论,但还没有声誉,所以我想不妨留下这个答案。

  1. 在Rails 4中,当前编写的查询会抛出一个关于隐式连接的长时间弃用警告(这是您通过引用where cause中的model_translations表而执行的操作)。

  2. 我相信你正在尝试返回Model记录,而不是Model::Translation记录。 因此,我认为您可以交换includes join ,这应该更高效,并摆脱弃用警告。

在我的Rails 4应用程序中,联接工作完美,但我还没有在Rails 3中测试过。

  ask by prikha translate from so

未解决问题?本站智能推荐:

3回复

如何避免Globalize3将属性的回退转换返回到特定上下文?

我正在使用Globalize3和easy_globalize_accesors进行网站的国际化/本地化工作,现在我正在调整表单以管理具有可能翻译的字段。 假设我有一个名为Role的类: 我这样做是因为我想显示默认翻译,如果没有翻译或在当前语言环境中为空,这可以按预期工作。 但是,在
1回复

globalize3-查询翻译的属性

我有2个型号: 与globalize3集成后,我无法弄清楚如何获得可以正常工作的查询,例如: Product.joins(:gender).where(genders: { name: 'male' }) 生成此sql查询: 但是我想我需要一个像这样的sql查询吗?
1回复

全球化3宝石排序数组与翻译::

我想要实现的目标:使用我的Gallery.tag isotope.js动态创建类别排序器 要做到这一点,我需要 循环出我的html .class的小写唯一标签 循环标记(使用globalize 3进行翻译)以在<h2>显示 我不能在两种情况下都使用@g
1回复

将蜻蜓与全球化一起使用

我正在尝试在模型中添加image_uid属性,以便可以使用不同的语言制作不同的图像。 我正在使用globalize3和Dragonfly。 问题是根本不起作用。 通常会上传西班牙图片(这是我的应用中的默认语言环境),但不适用于其他语言环境。 我没有任何错误或跟踪,只是无法正常工作。
1回复

全球化和Rails 4:兼容性状态

在我之前的问题中 (大约2个月前提出),我试图将Ruby on Rails从3.2.13版本升级到4.0.0,但没有成功,因为globalize3 ruby-gem兼容。 今天,我再次尝试进行升级,但没有成功,因为globalize3 ruby-gem的兼容性。 我尝试了在网络上找到的所
1回复

使用区域设置通过关联上的Globalize3翻译对ActiveRecord查询响应进行排序

我有两个模型和总共三个表。 不幸的是,已经发生了从原始表名重命名模型的情况,因此请避免混淆。 当然,后者由Globalize3用于转换SymptomName模型的:name属性。 症状has_many:症状名称。 考虑以下: 这将返回一个基本正确的列表,但是它会根据遇到
2回复

Rails,Globalize3检查翻译的属性是否改变了?

在Rails中,我们可以使用obj.field_changed?来检查模型属性是否已更改obj.field_changed? 。 假设我有一个使用Globalize3的模型。 它有translates :name 如何检查名称属性是否已更改? 像obj.name_cha
1回复

如何验证翻译的数据?

我正在使用Ruby on Rails(3.2.2), globalize3 (0.2.0)和batch_translations (0.1.2)ruby-gems。 我想验证globalize3处理的翻译数据以及它应该是。 也就是说,例如,如果...... ...在我的ROOT_RAI
1回复

Globalize3-一种视图中的两种翻译

我使用gem globalize3。 我想获得两种语言的翻译帖子,首先是英文,然后是俄文的索引视图。 我想发布的不是英语,而是在英语发布之后位于俄语下方。 我的问题是,因为我有默认的语言环境:en,并且如果: 如果出现以下情况,我会根据需要获得英文帖子: 我也收到英文帖
1回复

Globalize3-将翻译保存到数据库

嘿大家我是新手,并希望得到一些帮助将区域设置翻译保存到数据库。 我有这个表格 在添加阿拉伯语表单字段之前,我可以使用控制器中的create方法将模型保存到数据库中 但是如何将阿拉伯语翻译从表单保存到数据库?