Hotwire Turbo не заменяет турбо-рамку

У меня есть форма

      <turbo-frame id="goals">
    <form action="/add_goal">
        <label for="goal_name">Goal Name</label>
        <input type="text" id="goal_name" name="goal_name" placeholder="Goal name..">
        <input type="submit" value="Add Goal">
    </form>
</turbo-frame>

что я хочу заменить.

В ответ я отправляю 303 и возвращается "Location: /added_goal" и "/ added_goal"

      <html>
<body>
<turbo-frame id="goals">
    OK!
</turbo-frame>
</body>
</html>

Turbo устанавливает src на турбо-кадр, но не заменяет содержимое.

1 ответ

Ответ вашего сервера может быть неправильно отформатирован. Учитывая ваш HTML, внешний интерфейс Turbo будет ожидать что-то вроде следующего:

      <turbo-stream action="replace" target="goals">
  <template>
    <div>
      This div will replace the existing element with the DOM ID "goals".
    </div>
  </template>
</turbo-stream>

См. Turbo docs , фрагмент кода адаптирован оттуда.

Неясно, есть ли у вас эта проблема, но вы должны убедиться, что ваш сервер отвечает типом контента. text/vnd.turbo-stream. Если заголовок типа контента неверен, не имеет значения, правильно ли отформатирован HTML.

Другие вопросы по тегам