Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 活动管理-如何在之前添加自定义脚本</车身>;标签?_Ruby On Rails_Activeadmin - Fatal编程技术网

Ruby on rails 活动管理-如何在之前添加自定义脚本</车身>;标签?

Ruby on rails 活动管理-如何在之前添加自定义脚本</车身>;标签?,ruby-on-rails,activeadmin,Ruby On Rails,Activeadmin,我想对我的活动管理启用的rails应用程序进行一些分析。为此,我需要在布局文件中的标记之前粘贴一些和代码。不幸的是,我不能这样做,因为application.htmllayout文件似乎无效,因为ActiveAdmin呈现了自己的布局文件 是否有一个钩子/位置可以插入自定义html代码?好的,首先你必须将存储库克隆到你的rails应用程序中,通常你会将它放在供应商目录中,但rails会抛出这个恼人的警告,它会反对使用供应商目录样式的目录,如果您打算使用3.*版本进行生产,这并不重要,所以只需在r

我想对我的活动管理启用的rails应用程序进行一些分析。为此,我需要在布局文件中的
标记之前粘贴一些
代码。不幸的是,我不能这样做,因为
application.html
layout文件似乎无效,因为ActiveAdmin呈现了自己的布局文件


是否有一个钩子/位置可以插入自定义html代码?

好的,首先你必须将存储库克隆到你的rails应用程序中,通常你会将它放在供应商目录中,但rails会抛出这个恼人的警告,它会反对使用供应商目录样式的目录,如果您打算使用3.*版本进行生产,这并不重要,所以只需在rails应用程序的供应商或lib目录中执行此操作即可

git克隆git://github.com/gregbell/active_admin.git

现在更改您的
gem文件
,并从您设置的目录加载gem

gem'activeadmin',:path=>lib/activeadmin'

现在您有了自己版本的activeadmin,因此无论您需要编辑什么,都可以直接从该目录进行编辑,包括更改绑定的默认布局

几句忠告:

尽管此方法允许您更多地自定义活动管理员,但您完全知道,要将其更新为较新版本,您需要执行一些
git pull
ing操作,并在必要时进行合并

我在jQueryUIRails插件和另一个gem中使用了这种方法,它工作得非常出色,而且如果您将想要的钩子添加到gem本身,您还可以为gem做出贡献。 祝你好运

----编辑----

正如您在评论中所指出的,activeadmin并不像您期望的那样工作,但不用担心,它仍然是一个简单的解决方案。 在幕后,activeadmin使用了一种叫做
arbre
的东西,它是由同一个开发人员创建和维护的

https://github.com/gregbell/arbre
,它只是ruby的
DOM

所以你要做的是:

转到刚才克隆的activeadmin目录中的这个文件
lib/active\u admin/views/footer.rb

这是activeadmin应用程序的页脚,您可以在
build
方法中看到,您可以在
add\u scripts
方法和下面的add方法中插入

def add_scripts
  script :src => 'http://yoursource.com'
end
我不完全确定
arbre
语法是如何流动的,但应该不难理解

祝你好运

使用ActiveAdmin 0.6.0和Rails 4.0.5进行测试

您还可以覆盖活动管理员用于呈现页脚的视图。在您的
活动\u admin
初始值设定项中添加:

# config/initializers/active_admin.rb
require 'admin/analytics_footer'

ActiveAdmin.setup do |config|
  config.namespace :admin do |admin|
    config.view_factory.footer = Admin::AnalyticsFooter
  end
end
并定义视图:

# lib/admin/analytics_footer.rb
module Admin
  class AnalyticsFooter < ActiveAdmin::Views::Footer
    def build
      super
      render('layouts/analytics')
    end
   end
 end
#lib/admin/analytics_footer.rb
模块管理员
类AnalyticsFooter

并将ga跟踪代码放入
app/views/layouts/_analytics.html.erb
。服务器重新启动后,代码段应该出现在页面末尾的页脚内。

这对我来说很有用。我在activeadmin站点()上找到了它

#app/admin/calendar.rb
ActiveAdmin.register\u页面“日历”do
索引do
渲染部分:“日历”
结束
结束
#app/views/admin/calendar/_calendar.html.erb
你好

您可以克隆git存储库并从源代码中将其捆绑,这对您来说是一个足够好的解决方案吗?我会给你写一篇关于如何做的演练,如果是这样的话。@Guy好吧,如果是这样的话,请回答这个问题。我在app/views/layout下签入了布局文件的活动管理源。我只看到一个名为active_admin.html.arb的文件,其中只有一行。不知道如何在那里插入我的脚本!进一步扩展了我的答案:-)虽然我没有直接用你的答案回答我所问的具体问题,但它有助于定制许多其他东西。现在接受它。非常感谢!是的,这是可行的,但分叉主动管理应该是最后的选择;这对于进行一个小的定制来说太过分了。@b尽管我还没有尝试过,但我希望它能够与turbolinks一起工作,就像其他任何呈现分析片段的方式一样。无论内容如何呈现,TurboLink或多或少都会替换文档正文。
# app/admin/calendar.rb
ActiveAdmin.register_page "Calendar" do
  index do
    render partial: 'calendar'
  end
end

# app/views/admin/calendar/_calendar.html.erb
<h1>Hello</h1>
<script>
</script>