簡體   English   中英

ActiveAdmin 可以加載 webpack 捆綁的 javascript 嗎? - 導軌 5.1

[英]Can ActiveAdmin load javascript bundled by webpack? - Rails 5.1

我已經從 rails 4.2.6 升級到 rails 5.1,然后開始使用 webpack。
使用 webpack 的所有設置都已完成,但我不知道如何在 ActiveAdmin 頁面上加載 javascript 文件。
ActiveAdmin 默認加載app/assets/javascripts/active_admin.js.coffee
有沒有辦法在 ActiveAdmin 頁面上加載由 webpack 捆綁的 javascript 文件?

我有點晚了,但我相信包裝方法而不是完全覆蓋類更好。 此外,猴子修補Header將導致標簽在id="header" div 中呈現。 為了在<head />呈現它們,我執行了以下操作:

ActiveAdmin::Views::Pages::Base.class_eval do
  alias_method :original_build_active_admin_head, :build_active_admin_head

  def build_active_admin_head(*args, &block)
    original_build_active_admin_head(*args, &block)
    within @head do render '/custom_headers' end
  end
end

把這個文件放到config/initializers (這樣它就不會在開發模式下每次都重新加載導致無限循環)文件夾並用你需要的任何東西創建一個app/views/_custom_headers.html.erb文件。

Webpack 尚未得到官方支持。 我們現在使用的方法是修補 ActiveAdmin::Views::Header 以包含標簽來加載 Webpack 的生成輸出,例如。

class ActiveAdmin::Views::Header < Component
  def build(namespace, menu)
    ...
    render "application/custom_header_tags"
  end
end

在我們的例子中,我們的 custom_header_tags.erb 使用React On Rails,但可以替換您喜歡的任何集成。

對於從 Rails 6.0 開始的新應用程序,Webpacker 已成為默認資源生成器。 您也可以選擇將 Webpacker 用於 ActiveAdmin 資產,方法是更新您的配置以在安裝時或手動打開 use_webpacker 選項。

在 active_admin 安裝時:

rails g active_admin:install --use_webpacker

手動添加到 config/initializers/active_admin.rb

ActiveAdmin.setup do |config|
  config.use_webpacker = true
end

並運行生成器以獲取默認的 Active Admin 資產:

rails g active_admin:webpacker

#build_active_admin_head的方法簽名繼續發展。 從 ActiveAdmin v1.3.1 開始,它不再需要參數。

此外,除了其他答案中描述的方法別名和組件覆蓋方法之外,還有一種用於猴子修補 ActiveAdmin 的附加方法: module#prepend

下面是我如何覆蓋 ActiveAdmin 正文布局(在我的登台環境中的頁面上拋出一個大的“登台”橫幅)和頭部布局(添加對 webpacker 的javascript_pack_tag調用):

module AdminPageLayoutOverride
  def build_page(*args)
    within @body do
      render "layouts/global/environment_banner"
    end

    super
  end

  def build_active_admin_head
    super

    within @head do
      render "admin/custom_script_tags"
    end
  end
end

ActiveAdmin::Views::Pages::Base.send :prepend, AdminPageLayoutOverride

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM