Skip to content

[EXPERIMENTAL] Allow to render translations fields separately#62

Draft
Senen wants to merge 1 commit intomasterfrom
multiple_translation_blocks
Draft

[EXPERIMENTAL] Allow to render translations fields separately#62
Senen wants to merge 1 commit intomasterfrom
multiple_translation_blocks

Conversation

@Senen
Copy link
Copy Markdown
Member

@Senen Senen commented May 22, 2021

Sometimes we want to render the translations fields separated from each other, with not translatable fields or any other HTML component in between. Unfortunately, this was not possible because the hidden fields :_destroy and :locale were rendered for each translatable_field call resulting in duplicated fields for each translation and invalid HTML. So now we ensure to render each translation hidden_fields once per form.

In addition, the form fields for the same translation had a different index when using more than one translatable_fields block. So now, the index we use for translation fields is the position the translation locale occupies in the application's array of available languages.

This is an example of what we want to do:

    <%= f.translatable_fields do |translations_form| %>
        <%= translations_form.text_field :title %>
    <% end %>

     Some HTML here

    <%= f.translatable_fields do |translations_form| %>
        <%= translations_form.text_area :description %>
    <% end %>

The output for the previous code before this patch was:

    debate[translations_attributes][1][_destroy]
    debate[translations_attributes][1][locale]
    debate[translations_attributes][1][title]

    Some HTML here

    debate[translations_attributes][33][_destroy]
    debate[translations_attributes][33][locale]
    debate[translations_attributes][33][description]

Now, translation hidden fields are not duplicated and the index is the same for the same translation fields:

    debate[translations_attributes][1][_destroy]
    debate[translations_attributes][1][locale]
    debate[translations_attributes][1][title]
    debate[translations_attributes][1][description]

@Senen Senen force-pushed the multiple_translation_blocks branch 3 times, most recently from d617566 to c36a82b Compare May 24, 2021 09:57
@Senen Senen changed the title [EXPERIMENTAL] Allow to render translations fields separatedly [EXPERIMENTAL] Allow to render translations fields separately May 24, 2021
@Senen Senen force-pushed the multiple_translation_blocks branch from c36a82b to be8b13d Compare May 24, 2021 17:32
Sometimes we want to render the translations fields separated from each other,
with not translatable fields or any other HTML component in between.
Unfortunately, this was not possible because the hidden fields `:_destroy` and
`:locale` were rendered for each `translatable_field` call resulting in
duplicated fields for each translation and invalid HTML. So now we ensure to
render each translation hidden_fields once per form.

In addition, the form fields for the same translation had a different index
when using more than one `translatable_fields` block. So now, the index we use
for translation fields is the position the translation locale occupies in the
application's array of available languages.

This is an example of what we want to wirte

```
    <%= f.translatable_fields do |translations_form| %>
        <%= translations_form.text_field :title %>
    <% end %>

     Some HTML here

    <%= f.translatable_fields do |translations_form| %>
        <%= translations_form.text_area :description %>
    <% end %>
```

The output for the same translation fields was:

```
    debate[translations_attributes][1][_destroy]
    debate[translations_attributes][1][locale]
    debate[translations_attributes][1][title]

    Some HTML here

    debate[translations_attributes][33][_destroy]
    debate[translations_attributes][33][locale]
    debate[translations_attributes][33][description]
```

After this patch, translation hidden fields are not duplicated and the index is
the same for the same translation fields:

```
    debate[translations_attributes][1][_destroy]
    debate[translations_attributes][1][locale]
    debate[translations_attributes][1][title]

    Some HTML here

    debate[translations_attributes][1][description]
```
@Senen Senen force-pushed the multiple_translation_blocks branch from be8b13d to 3cdac2f Compare May 24, 2021 17:35
@taitus taitus force-pushed the master branch 2 times, most recently from 25ba35f to df9b00f Compare February 15, 2023 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant