3

例:

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"}
  ...

私のレイアウトでは、JavaScriptを

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

質問 1: これは、Google ライブラリが 2 回含まれることを意味します。ライブラリが常に一度だけロードされるようにするにはどうすればよいですか? A はビュー ヘラーのことを考えていたのでしょうか。

質問 2: 各パーシャルがコンテンツを追加するグローバルな content_for フィールドを持つことは可能ですか? どうも。

4

1 に答える 1

4

inject_jsビューで使用するメソッドをアプリケーションヘルパーに追加できます。

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

次に、アプリケーションビューで:

%html
  %head
  ...
  = inject_js

ビッグマップを使用するビューでは、次のようになります。

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

または通常の地図:

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

inject_jsを使用するため@javascripts.uniq、Googleライブラリは1回だけ読み込まれます。

inject_jstogのtog_coreから取得したコード。他にもメソッドがあります(inject_cssなど)。

于 2010-02-23T17:49:28.437 に答える