gist.githubは、右上の「embed」をクリックすると、

のようなコード片が出てきて、それをブログ等に貼り付けるとシンタクスハイライトされたコードが載せられる。

こんな感じのブログパーツをRuby on Railsで作るとどうなるかなーとか考えた。

上記ブログでやっておられることがまさに僕のやりたいことだったんだけど、もうちょっとシンプルにしてみた。prototype.js非依存で。

まずはコントローラー。

そしてrjsファイル。gistで拡張子が「rb」になってるのはシンタクスハイライト対策です、、(.rjs だと効かないでやんの)

色々考えた結論としては、こんな感じで document.write を直書きでおkなんじゃないかと思った。この際気をつけることとして、僕はJavaScriptが久しぶり過ぎて引数のカッコを省略してしまったので、皆さんも気をつけましょうね。

あと、RJSテンプレート内部でも普通に url_for とか render とか使えるし、render は究極的に文字列を返すだけなので、あとは良きに計らいましょう。そうそう、なんか render(:partial) が、拡張子までちゃんと記述しとかないとうまくいかなかったのでそこも注意。

というか、ちらほら目につく上記コードの String#gsub とかはヘルパーメソッドにまとめた方が断然いいと思うので、ちゃんとするときはそうしましょう。

一度アクセスでもして軽く動作確認したら、ブログに以下の記述を。

この辺はサンプルなので、適宜読み替えてほしいかも。

あと、ふと思ったんだけど、ブログパーツ提供側がUTF-8で、ブログ自体はEUC-JPとかだと困ったことになるなって思った。rjsにパラメータでエンコード情報を渡すか、JavaScript側でエンコードを変換するか、そんな感じになるのかね。