Rails 从 Turbolinks 升级到 Turbo

Rails upgrade from Turbolinks to Turbo

提问人:hybridspyda 提问时间:8/8/2023 最后编辑:hybridspyda 更新时间:8/9/2023 访问量:52

问:

我正在尝试将我的 Rails 应用程序 (v6.1.7.4) 从 Turbolinks 升级到 Turbo。 我使用链轮(4.2.0)。

我已经完成了将importmap.json包含到我的config文件夹的路径,并尝试通过“app/assets/javascripts”利用我已经存在的资产管道。

importmap.json文件

{
    "imports": {
        "application": "/assets/application.js",
        "@hotwired/turbo-rails": "/assets/turbo.js"
    }
}

涡轮.js

//= require turbo

application.html.erb 包含

...
<%= javascript_importmap_tags %>
<%= javascript_include_tag 'turbo', 'data-turbo-track': true %>
<%= javascript_include_tag 'application', 'data-turbo-track': true %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbo-track': true %>
...

控制器>关注点> turbo >重定向.rb

module Turbo
  module Redirection
    extend ActiveSupport::Concern

    def redirect_to(url = {}, options = {})
      turbo = options.delete(:turbo)

      super.tap do
        if turbo != false && request.xhr? && !request.get?
          visit_location_with_turbo(location, turbo)
        end
      end
    end

    private
      def visit_location_with_turbo(location, action)
        visit_options = {
          action: action.to_s == "advance" ? action : "replace"
        }

        script = []
        script << "Turbo.cache.clear()"
        script << "Turbo.visit(#{location.to_json}, #{visit_options.to_json})"

        self.status = 200
        self.response_body = script.join("\n")
        response.content_type = "text/javascript"
        response.headers["X-Xhr-Redirect"] = location
      end
  end
end

加载页面时,我在 Web 浏览器 (Chrome) 的控制台中看到以下错误: “未捕获的 TypeError:无法解析模块说明符”应用程序”。相对引用必须以“/”、“./”或“.”开头。/"."

Ruby-on-Rails Turbolinks Turbo Import-Maps

评论


答: 暂无答案