gpt4 book ai didi

ruby-on-rails - Rails 全局 content_for

转载 作者:行者123 更新时间:2023-12-03 16:51:56 26 4
gpt4 key购买 nike

例子:

我有 2 个部分 _map.haml 和 _bigmap.haml。

::_map.haml

- content_for :map do
%script{:type => "text/javascript", :src => "http://maps.google.com/maps/api/js?sensor=true"}
...

::_bigmap.haml

- content_for :bigmap do
%script{:type => "text/javascript", :src => "http://maps.google.com/maps/api/js?sensor=true"}
...

在我的布局中,我将 javascripts 包含到

= yield(:map)
= yield(:bigmap)

问题 1:这意味着谷歌图书馆将被包含两次。我该如何处理这个库总是只加载一次? A 可能在考虑 View heler?

问题 2:是否有可能有一个全局 content_for 字段,每个部分都将其内容附加到它?谢谢。

最佳答案

您可以将 inject_js 方法添加到您的应用程序助手中以在 View 中使用:

def inject_js
@javascripts.uniq.collect{ |js|
javascript_include_tag js
}.join("\n")
end

然后在您的应用程序 View 中:

%html
%head
...
= inject_js

在任何使用大 map 的 View 中:

- @javascripts << 'http://maps.google.com/maps/api/js?sensor=true'
- @javascripts << 'bigmap'

或常规 map :

- @javascripts << 'http://maps.google.com/maps/api/js?sensor=true'
- @javascripts << 'bigmap'

因为 inject_js 使用 @javascripts.uniq,Google 库只会加载一次。

inject_js 代码取自 tog's tog_core .还有其他方法(inject_css 等)。

关于ruby-on-rails - Rails 全局 content_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com