Turbo
Turbo は Hotwire の一部です。 Rails アプリケーションが、カスタム JavaScript を必要とせずにページの一部を更新する機能を有効化します。
RubyMine は、Rails ビュー、コントローラー、モデル内で turbo-rails gem の Ruby API 向けコードインサイトを提供します。 プロジェクトで gem が利用可能な場合、Turbo メソッドは通常の Ruby メソッドと同じように解決されます。 Turbo 固有の候補は太字で表示され、補完リストの先頭に並べ替えられます。
候補とメソッドシグネチャーは、プロジェクトにインストールされている turbo-rails のバージョンから派生します。 入力中にコード補完が自動的に表示されます。 手動で呼び出すには、 Ctrl+Space を押します。
次のプロシージャでは、Rails アプリケーションで Turbo を操作するときに RubyMine コードインサイトを使用する方法を示します。 生成する メッセージ リソースを使用して、Turbo フレーム、Turbo ストリーム、ブロードキャストの補完とナビゲーションを示します。 これらの機能をアプリケーションに実装する方法については、 Turbo Handbook を参照してください。
始める前に
サンプルリソースを作成する
Rails 7.0 以降を使用する 新しい Rails アプリケーションを作成します。
turbo-railsgem がプロジェクトに含まれていることを確認してください。Ctrl を二度押して Run Anything を開き、次を実行します:
rails generate scaffold Message content:text
生成されたリソースは、以降のデモで編集コンテキストとして使用するモデル、コントローラー、ビューを提供します。 アプリケーションを実行する必要はありません。
Turbo Frame コード編集ヘルパーの補完
RubyMine では、Turbo ビューコード編集ヘルパーを ERB テンプレートで使用できます。 生成するビューを使用して、 turbo_frame_tag の補完がどのように機能するかを確認します。
Turbo Frame コード編集ヘルパーを補完する
アプリ/views/messages/_message.html.erb を開き、ERB 式を開始して、
turbo_と入力します:RubyMine は、インストールされている gem で利用可能な Turbo コード編集ヘルパーを一覧表示します。 Turbo メソッドは太字で表示され、補完リストの先頭に並べ替えられます。

turbo_frame_tagを選択し、式を補完します。例:<%= turbo_frame_tag message do %> <%= message.content %> <% end %>
Turbo Stream アクションの補完
turbo_stream コード編集ヘルパーは Turbo::Streams::TagBuilder に解決されます。 そのため、RubyMine はプロジェクトで使用されている turbo-rails のバージョンが提供するストリームアクションを補完できます。
Turbo Stream テンプレート内のアクションを補完する
アプリ/views/messages/create.turbo_stream.erb を作成します。
ERB 出力タグ (
<%= ... %>) 内で、turbo_stream.と入力し始めます。 RubyMine は、インストールされている gem で利用可能な Turbo Stream アクションを自動的に表示します。
prependを選択し、呼び出しを補完します:<%= turbo_stream.prepend "messages", @message %>新しい行で、別の ERB 出力タグ内に
turbo_stream.と入力し始め、補完リストから更新を選択します。
"new_message"をターゲットとして指定し、新しいメッセージフォームをレンダリングするブロックを追加します:<%= turbo_stream.update "new_message" do %> <%= render "form", message: Message.new %> <% end %>
Turbo Stream アクションは、コントローラー内で直接構築することもできます。 このコンテキストでコード補完を示すために、生成する 削除 アクションに Turbo ストリームレスポンスを追加します。 レスポンスは 削除 アクションを使用して、削除されたメッセージをページから削除します。
コントローラー内の Turbo Stream アクションを補完する
アプリ/コントローラー/messages_コントローラー.rb を開き、生成する
削除アクションを次のコードに置き換えます。 二つ目のturbo_stream.の後にキャレットを置いたままにします:def destroy @message.destroy! respond_to do |format| format.turbo_stream do render turbo_stream: turbo_stream. end format.html do redirect_to messages_path, status: :see_other, notice: "Message was successfully destroyed." end format.json { head :no_content } end endCtrl+Space を押す。 RubyMine は、インストールされている gem で利用可能な Turbo Stream アクションを表示します。
削除を選択し、@messageをターゲットとして指定します。補完されたアクションは次のようになります:
def destroy @message.destroy! respond_to do |format| format.turbo_stream do render turbo_stream: turbo_stream.remove(@message) end format.html do redirect_to messages_path, status: :see_other, notice: "Message was successfully destroyed." end format.json { head :no_content } end end
ブロードキャストメソッドの補完
RubyMine は、 Turbo::Broadcastable のメソッドを Rails モデルで利用可能にし、コード補完で優先します。
ブロードキャストメソッドを補完する
アプリ/models/message.rb を開き、
after_update_commitコールバックを追加します。 コールバックブロック内で、broadcast_と入力し始めます:class Message < ApplicationRecord after_update_commit do broadcast_ end endRubyMine は、インストールされている
turbo-railsのバージョンで利用可能なブロードキャストメソッドを提案します。これには、同期メソッドとその非同期_later_toバリアントが含まれます。
broadcast_replace_later_toを選択し、"messages"をストリーム名として指定します。 補完されたコールバックは次のようになります:class Message < ApplicationRecord after_update_commit do broadcast_replace_later_to "messages" end end
Turbo メソッドの移動とインスペクション
RubyMine は、インストールされている turbo-rails gem が提供する Turbo メソッドを解決するため、その宣言に移動し、ドキュメントとシグネチャーを確認できます。
turbo_frame_tag など、解決済みの Turbo メソッドにキャレットを置き、次のいずれかを実行します:
Ctrl+B を押して、gem 内のメソッド宣言に移動します。
turbo_frame_tagの場合、RubyMine はインストールされている gem 内の アプリ/コード編集ヘルパー/turbo/frames_helper.rb を開きます。Ctrl+Q を押して、メソッドのドキュメントを表示します。
メソッド呼び出し内で Ctrl+P を押して、そのシグネチャーを表示します。