Rails动态字段添加(多语言)

时间:2013-09-11 13:34:20

标签: ruby-on-rails ruby-on-rails-3 nested-forms formbuilder globalize3

我有一组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)

这个问题有什么好的解决方案吗?谢谢!

0 个答案:

没有答案