ruby - Rails 4 和全局化不添加翻译

标签 ruby ruby-on-rails-4 rails-i18n globalize

我升级到 Rails 4 和全局化(而不是 globalize3),从那以后翻译就不能正常工作了。

步骤:

创建英文记录
将语言环境更改为 :es
然后在刚刚创建的对象上调用 update_attributes

这用于在 es 中创建一个新的翻译。
但是,现在,它修改的是英文记录!!!请帮忙?

gem 文件:

gem "rails", "4.0.1"
gem "globalize", "~> 4.0.0.alpha.1"

型号:

class GlossaryTerm < ActiveRecord::Base
 translates :term, :definition
 accepts_nested_attributes_for :translations

 has_many :glossary_term_translations
 belongs_to :section
 validates_presence_of :term
 validates_presence_of :definition

 **after_create :create_spanish_placeholder**

 def create_spanish_placeholder
   term = self.term
   definition = self.definition
   I18n.locale = :es
   self.update_attributes(:term => "SPANISH placeholder for #{term}", :definition => "SPANISH placeholder for #{definition}")
   I18n.locale = :en
 end

#...

end

Controller :

class Admin::GlossaryTermsController < ApplicationController
before_filter :authorize_sysadmin!

def create
  find_models
  @glossary_term = @section.glossary_terms.new(glossary_term_params)
  if @glossary_term.save
    redirect_to edit_admin_section_url(@section, program_id: @program.id)
  else
    render :action => "new"
  end
end

#...

 protected

 def glossary_term_params
   params.require(:glossary_term).permit(:term, :definition, :glossary_image,   :glossary_image_file_name,
                                    :translations_attributes => [:id, :term, :definition])
 end

 #...

 end

最佳答案

试试这个方法:

def create_spanish_placeholder
  term = self.term
  definition = self.definition
  Globalize.with_locale(:es) do
    self.update_attributes(:term => "SPANISH placeholder for #{term}", :definition => "SPANISH placeholder for #{definition}")
  end
end

关于ruby - Rails 4 和全局化不添加翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20503406/

相关文章:

ruby - 如何在 Ruby 中读取 UDP 广播数据报

ruby-on-rails - 运行在 Rails 4 和 MiniTest 中生成的功能测试时出现 InvalidAuthenticityToken 错误

ruby-on-rails - rails : How to generate translation files like django

ruby-on-rails - I18n.l 显示错误的月份(一个月后)

ruby-on-rails - 如何在rails中制作可变路线

ruby-on-rails - 无法使用 Assets :precompile 在 rails rake 上复制 NilClass

ruby-on-rails - 使用 rails 4 认证的根路由进行设计无法正常工作

ruby-on-rails - 如何 stub i18n_scope 以在 Rails 4 rspec 3.3.0 上模拟 ActiveRecord::RecordInvalid?

ruby-on-rails - Rails : Model. human_attribute_name :field should raise an error when translation not found?(可能是由 state_machine 引起的?)

ruby - 生产服务器上的 RVM?