静的なHtmlをインクルードする

INDEX PAGE


静的な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
  end

  begin
   ##ファイルを開いて戻り値文字列に値を詰め込む
   open( RAILS_ROOT + html ){ |io|
    while line = io.gets
      dscrpt = dscrpt + line + " "
    end
   }
  rescue Errno::ENOENT
   ##指定ファイルが存在しない場合には空文字を返す
   dscrpt = ""
  end

  return dscrpt
end

基本的には、Htmlを読み込んでStringオブジェクトに詰め込み返します。


rHtml、erbの中では

<% for line in includ("/public/_header.html") %>

というように、RailsRootからの絶対パスを指定して埋め込むことで
静的なHtmlをインクルードできるようになりました。



INDEX PAGE