これらの Rails アセット タグ ヘルパーは、ActionView のサブモジュールであり、ActionView::Helpers::AssetTagHelper
ビューを画像、JavaScript、スタイルシート、フィードなどのアセットにリンクする HTML を生成するメソッドを提供します。
スーパークラスとしてmodules
持っclass
ているので、AssetTagHelpers にもそれがあることを意味します
irb(main):016:0> ActionView::Helpers::AssetTagHelper
=> ActionView::Helpers::AssetTagHelper
irb(main):017:0> ActionView::Helpers::AssetTagHelper.class
=> Module
irb(main):018:0> ActionView::Helpers::AssetTagHelper.class.superclass
=> Object
irb(main):019:0> ActionView::Helpers::AssetTagHelper.class.superclass.superclass
=> BasicObject
irb(main):020:0> ActionView::Helpers::AssetTagHelper.class.superclass.superclass.superclass
=> nil
注: 簡単にするために、JavascriptIncludeTag のみに焦点を当てますが、それらはすべて非常に似ています。
ここに、というクラスがあります。ActionView::Helpers::AssetTagHelper::JavascriptIncludeTag
インスタンス化できるもの
JavascriptIncludeTag.new(config, asset_paths)
JavascriptIncludeTag クラスには、メソッドasset_tag
を呼び出しcontent_tag
て正しいタグを返すというメソッドがあります。
パス: /actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
require 'action_view/helpers/asset_tag_helpers/asset_include_tag'
# NOTE: on the 'action_view/helpers/asset_tag_helpers/asset_include_tag' it requires '/actionpack/lib/action_view/helpers/tag_helper.rb' so now all this files are connected :)
.
.
.
def asset_tag(source, options)
content_tag("script", "", { "src" => path_to_asset(source) }.merge(options))
end
パス: /actionpack/lib/action_view/helpers/tag_helper.rb
def content_tag(name, content_or_options_with_block = nil, options = nil, escape = true, &block)
if block_given?
options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
content_tag_string(name, capture(&block), options, escape)
else
content_tag_string(name, content_or_options_with_block, options, escape)
end
end
そのため、彼らがどのように機能するかはさらに少なくなります。
注:私の説明が少し難しいと感じた場合は、お知らせください。より良い説明を提供するために編集します