我有一组2个字段(标题,描述)和一些语言环境(英语,瑞典语)供翻译。
当您访问该页面时,您只能看到英文设置字段。但是,用户必须能够提供额外的翻译(如果他愿意)。为此,我使用“globalize3”和“batch_translations”(https://github.com/fidel/batch_translations)宝石。
语言选择就像下拉列表一样。选择语言后,新的字段集应显示在上一组的下方。
问题本身有点类似于他的截屏中的一个Ryan:http://railscasts.com/episodes/197-nested-model-form-part-2
但是,有一个主要区别 - 表格也必须翻译。
首先,我认为一切正常,我不会有任何问题将表单构建器引用传递给我的控制器的远程操作,它负责使用所选语言环境呈现部分并嵌入它。
但事实证明,没有可能通过object_id传递引用(垃圾收集器销毁它)。
然后我发现你可以在控制器中实例化FormBuilder,如下所示:
f = ActionView::Helpers::FormBuilder.new(:name, @object, view_context, {}, nil)
如果我这样做,只有一阶段字段正常工作,如下所示:f.text_field
但是,globalize3和batch_translations正在使用nested_attributes:
<% f.globalize_fields_for locale do |g| %>
g.text_field :title
g.text_area :description
<% end %>
由于某些原因(我认为这是因为view_context不正确),系统会抛出错误:
ActionView::Template::Error (undefined method `<<' for nil:NilClass)
这个问题有什么好的解决方案吗?谢谢!