0

hotwireのランディング ページの例に示されているように、フォームのクリア手順はわかりにくく、機能しません。

Rails 7.0.1 がインストールされ、Ruby 3.1 が実行されています。刺激コントローラーは次のように設定されます。

import { Controller } from  "@hotwired/stimulus"      // "stimulus"

export default class extends Controller {
  reset() {
    this.element.reset()
  }
}

注: DHH の例は刺激のみを呼び出しますが、レールによって事前にインストールされているものhello-controller.jsは を参照し@hotwired/stimulusます。両方のシンタッシが試みられましたが、役に立ちませんでした。

フォーム要素は次のように構成されています。

  <%= turbo_frame_tag 'new_message', target: '_top' do %>
    <%= form_with(model: [ @message.room, @message ], data: { controller: "reset_form", action: "turbo:submit-end->reset_form#reset" } ) do |form| %>
        <%= form.text_field :content, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
        <%= form.submit 'send' %>
    <% end %>

送信アクション(実際にはその終了)が接続であることがわかります。しかし、新しいレコードが作成され、UI が期待どおりに更新されている間は、それは起こっていません。

これが失敗する理由と、どのように修正する必要がありますか?

4

1 に答える 1

1

コントローラーの名前はreset_form_controller.js.

ただし、これはアンダースコアで誤って参照されています

data: { controller: "reset_form", action: "turbo:submit-end->reset_form#reset" }

reset formダッシュを使用する必要がある場合

data: { controller: "reset-form", action: "turbo:submit-end->reset-form#reset" }```
于 2022-01-17T07:01:31.307 に答える