Как вы используете турбокадр, чтобы заменить форму создания объекта частичной демонстрацией объекта?
у меня есть модель
subscription_tier
с и
edit
действия с соответствующими представлениями. Я обернул каждый из них турбо-рамой.
<%= turbo_frame_tag subscription_tier do %>
Когда я редактирую существующий уровень подписки и сохраняю его, турбо-кадр обновляется и показывает мой сохраненный уровень, но я не могу воспроизвести это для создания новых уровней.
Моя новая многоуровневая рамка:
<turbo-frame id="new_tier">
<%= link_to "Add Tier", new_create_subscription_tier_path(sub_type: "Free"), class: "btn btn-primary mb-3 fs-6"
%>
</turbo-frame>
И в
new.html.erb
<turbo-frame id="new_tier">
<%= render partial: "create/subscription_tiers/edit", locals: {
subscription_tier: @subscription_tier
} %>
</turbo-frame>
Нажатие кнопки «Добавить уровень» успешно отображает форму, и я могу сохранить объект, но при сохранении турбо-кадр уничтожается с ошибкой.
Response has no matching <turbo-frame id="new_tier"> element
Я знаю, это потому, что мой
show
частичное завернуто в
<%= turbo_frame_tag subscription_tier do %>
, но я не знаю, как примирить это.
2 ответа
Я считаю, что вам нужно добавить тег данных к вашей новой ссылке, т.е.
<%= link_to "new subscription", subscription_path, data: { turbo_frame: dom_id(Subscription.new) } %>
На той же странице, что и эта ссылка ^^^^ нужно добавить
<%= turbo_frame_tag Subscription.new %>
Я считаю, что это то, что вы пытаетесь достичь
Существует фантастический учебник, который охватывает все эти вещи, которые бесплатны здесь .
Возможно, ОП понял это, но для тех, кто ищет возможное решение, вы всегда можете установить идентификатор турбокадра вручную, например:
<!-- new.html.erb, edit.html.erb -->
<%= turbo_frame_tag 'subscription_tier_frame' do %>
<%-- form for subscription tier -->
<% end %>
и
<!-- show.html.erb -->
<%= turbo_frame_tag 'subscription_tier_frame' do %>
<%-- rendered subscription tier -->
<% end %>
Это сохранит все в той же турбораме.