1

翻訳用に 2 つのフィールド (タイトル、説明) といくつかのロケール (英語、スウェーデン語) のセットがあります。

ページにアクセスすると、英語の設定フィールドのみが表示されます。ただし、ユーザーは追加の翻訳を提供できる必要があります (必要な場合)。そのために、"globalize3" と "batch_translations" ( https://github.com/fidel/batch_translations ) の gem を使用します。

言語の選択は、ドロップダウン リストのように行われます。言語を選択すると、新しいフィールド セットが以前のセットのすぐ下に表示されます。

問題自体は、Ryan がスクリーンキャストで取り上げたものと似ています: http://railscasts.com/episodes/197-nested-model-form-part-2

ただし、大きな違いが 1 つあります。フォームも翻訳する必要があります。

最初は、すべて問題ないと思っていました。選択したロケールでパーシャルをレンダリングして埋め込む役割を担うコントローラーのリモート アクションにフォーム ビルダー参照を渡すのに問題はありません。

しかし、object_id (Garbage Collector destroy の it) で参照を渡す可能性がないことが判明しました。

次に、次のように、コントローラーで 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)

この問題の良い解決策はありますか? ありがとう!

4

0 に答える 0