静的なHtmlをインクルードする
静的なHtmlをインクルードする
Rubyではrenderを利用すると別ファイルのrhtmlやerbをインクルードすることができます。
<%= render :partial => 'form', :locals => { :form => form} %>
このようにすることで"_form.rhtml"をこの部分にインクルードしてくれます。
しかし、静的なHtmlファイルについてはインクルードする方法が見つかりませんでした。
例えば、サイトのヘッター・フッターを表示するときなど
静的なHtmlを取り込みたく色々調べたのですが、それっぽい情報がありませんでした。
もしかしてちゃんと探せばあるのかもしれないのですが
めんどくさかったので自分で作ってしまうことにしました。
"/app/application_helper.rb"に次のようなメソッドを追加しました。
def includ( html )
##戻り値用文字列
dscrpt = ""##引数のパスがNIL又は空文字の場合は空文字を返す
if html == nil || html.length < 1 then
return ""
end##引数がファイルセパレーターで始まっていない場合は補完する
unless html[0,1] == '/' then
html = '/' + html
endbegin
##ファイルを開いて戻り値文字列に値を詰め込む
open( RAILS_ROOT + html ){ |io|
while line = io.gets
dscrpt = dscrpt + line + " "
end
}
rescue Errno::ENOENT
##指定ファイルが存在しない場合には空文字を返す
dscrpt = ""
endreturn dscrpt
end
基本的には、Htmlを読み込んでStringオブジェクトに詰め込み返します。
rHtml、erbの中では
<% for line in includ("/public/_header.html") %>
というように、RailsRootからの絶対パスを指定して埋め込むことで
静的なHtmlをインクルードできるようになりました。