[英]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.