ruby-on-rails-3 - Mongoid 字段和随后添加的本地化

标签 ruby-on-rails-3 localization ruby-on-rails-3.2 mongoid mongoid3

以后添加本地化时有什么需要考虑的吗?


类(class)文章
字段:标题,类型:字符串

类(class)文章
字段:标题,类型:字符串,本地化:true

我的 Articles 上有内容模型并希望随后添加本地化。

现在我发现有时内容会显示为哈希

{"en"=>"asdfasdf", "de"=>"123123123"}

有时作为普通文本。

如果我通过以下方式显示文章
@article.title
# I get --> no implicit conversion from nil to integer


@article.title_translations
# I get --> no implicit conversion from nil to integer

如果文档未翻译,则总是会发生这种情况。 (字符串)。

额外的

此外,如果我尝试更改内容,我会遇到问题:
article.title # "en"
article.title_translations # "Test Title"
article.update_attribute(:name, c.name_translations)
# raises NoMethodError: undefined method `merge!' for "Test Title":String
article.name = c.title_translations
# raises NoMethodError: undefined method `merge!' for "Test Title":String


  • 如何正确地将字符串字段更改为“字符串,:localize => true”?
  • 是否有脚本或要迁移的东西?
  • 最佳答案

    如果文档未翻译并且您尝试访问此字段,则会引发错误:

    no implicit conversion from nil to integer
    

    如果您尝试更改它,则会引发错误:
    raises NoMethodError: undefined method `merge!' for "Test Title":String
    

    这似乎是一个 mongoid 错误。现在,您可以在添加 'localize: true' 后为迁移执行此操作:
    I18n.locale = :en
    Article.all.each do |article|
      begin
        article.title
      rescue
        b = article.attributes['title']
        article.unset('title')
        article.title = b
        article.save
      end
    end
    

    它为我创造了诀窍。

    关于ruby-on-rails-3 - Mongoid 字段和随后添加的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21077091/

    相关文章:

    ruby - 在 ruby​​ 中格式化日期/时间

    c# - 如何在本地化字符串中包含变量?

    objective-c - 如何使用特定语言的本地化 UIImage?

    ruby - 导轨 : label_tag in helper method not outputting code

    ruby-on-rails - 未初始化的常量 CustomerBill::CustomerBillLineItem

    ruby-on-rails-3.2 - Rails 3.2 路由 : multiple defaults

    ruby-on-rails - 如何在 'format.json/xml { render :json/xml => @user.to_json/xml }' 中设置 JSON/XML 响应的 header ?

    ruby-on-rails - Devise 2.2.3 始终在登录前显示已登录通知

    ruby - 如何从网页中获取所有图片、pdf和其他文件链接?

    vim - vim 是否支持非 ASCII 命令?