2008/08/31

RailsでJavascriptのソースが現れる位置をHTMLの最後(</body>の直前)へ持って行く


HTML内へJavascriptを書くときの位置として、体感読み込み時間を減らす目的で推奨されているのは、HTMLの最後(</body>の直前)へ書くことのようです。静的なHTMLであれば比較的やりやすいのですが、ヘッダやフッタが複数のテンプレートファイルに分かれていることが普通の動的HTMLだと、利用しているテンプレートエンジンやフレームワークによっては難しい場合があります。



Railsでは、capture helperを使えば簡単に実現できたのでメモ書きしておきます。



レイアウトテンプレート

<html>
<body>
<%= @content_for_layout %>

<!-- 共通のJSファイルを読み込む -->
<script type="text/javascript" src="http://other.host/a.js"></script>
<script type="text/javascript" src="http://other.host/b.js"></script>
<% if @content_for_javascript %>
<%= @content_for_javascript %>
<% end %>
</body>
</html>


Action側のテンプレート

<% @content_for_javascript = capture do %>
<script type="text/javascript">
alert("Page specific javascript is executed");
</script>
<% end %>

<div id="main">
ページの内容
</div>


出力内容

<html>
<body>

<div id="main">
ページの内容
</div>

<!-- 共通のJSファイルを読み込む -->
<script type="text/javascript" src="http://other.host/a.js"></script>
<script type="text/javascript" src="http://other.host/b.js"></script>
<script type="text/javascript">
alert("Page specific javascript is executed");
</script>
</body>
</html>



こうすることで、共通のJavascriptソースはlayoutテンプレートへ、そのActionだけで使われるJavascriptソースはaction側のテンプレートへと分けて書き込みながら、最終的なHTMLとしてはすべてのJavascriptソースを</body>の直前へ集約させることができました。

ラベル: ,


2008/08/16

ruby-openid に https アクセスさせる


でやった。


apt-get install ca-certificates

して、

$ ls -l /etc/ssl/certs/ca-certificates.crt
-rw-r--r-- 1 root root 153268 2008-08-16 17:23 /etc/ssl/certs/ca-certificates.crt

ができたことを確認したら


OpenID.fetcher.ca_file='/etc/ssl/certs/ca-certificates.crt'

をconsumerの機能を実装しているControllerに書いておくと、次回からhttpsのアクセスが必要なところができてもきちんと処理する。

This page is powered by Blogger. Isn't yours?