【问题标题】:Rails - Database translation on user selection valuesRails - 用户选择值的数据库翻译
【发布时间】:2016-05-29 16:50:39
【问题描述】:

在我的 rails 应用程序中有一个选择框,其中包含燃料类型的值,例如石油、天然气、石油、柴油。默认语言是 en 所以这很好。 当用户将网站更改为法语时,这些数据应显示为法语,并且当用户提交表单时,数据应为 fr 但是,我无法使用

fr:
  fuel_types:
    oil: ""
    gas: ""
    petroleum: ""  

因为那时数据库数据将混合使用fr和en语言。然后我必须在显示页面中显示这些数据,如果是 fr 或 en。

globalize3 gem 可以做到这一点吗?

我看到数据库中的静态内容可以用 globalize3 翻译,但是当用户根据语言环境变量填写表单时,它是 fr 或 en,然后数据库将填充 en 和 fr 值,这几乎不可能搜索数据和过程。

顺便说一句:我有一个名为fuel_types 的模型,其名称为id 列,我在其中保留石油、天然气、石油值以显示在选择标签中。然后我将它们保存到汽车模型。

编辑

这样你是对的!但是如果我有呢?

...
 <%= f.collection_select(:fuel_type,  Fuel.all, :name, :name, {}, class: "Select-control u-sizeFull") %>
... 

我有一个名为 Fuel 的模型,这种燃料(属于汽车模型)应该被视为语言环境变量。那么应该用一种语言写到数据库吗?

【问题讨论】:

  • select 适用于键值对数组,其中键应存储到数据库,值是用户在选择中看到的。只需传递 [["gas", "gas_in_french"], ["oil", "oil_in_french"]] 而不是 ["gas","oil"]。
  • 还有一件事。我编辑了问题

标签: ruby-on-rails ruby database translate globalize3


【解决方案1】:

所以对于已编辑的问题:第三和第四个参数可以是响应调用的任何内容,因此不要在第四个参数中使用名称,而是使用 proc {|fuel| translate(fuel.name)} 或您拥有的任何其他翻译方法,只需在 proc 中调用它即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多