Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EXPERIMENTAL] Allow to render translations fields separately #62

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Senen
Copy link
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