MerbのコントローラをParts的に利用するプラグイン merb_component を作りました。 Railsのcomponentに似てますが、Railsと比べて大分シンプルに実現できています。

使い方

githubからgenki-merb_componentをインストールし、 config/dependencies.rbの中で、以下のように記述します。

   1  dependency "genki-merb_component", :require_as => "merb_component"

あとは、Viewの中から以下のような感じで呼び出せばOKです

   1  <%= component Users, :show, :id => 1 %>

merb_partsと違って、全てのコントローラに対して利用出来ます。

posted by Png genki on Mon 5 Jan 2009 at 06:28

MerbにはPartsという仕組みがありますが、通常のコントローラのアクションをPartsのように利用する方法を紹介します。

   1  <%= Comments.new(Merb::Request.new({}))._dispatch(:index).render :layout => false %>

この例では、Commentsコントローラに対して空のリクエストオブジェクトを生成し、plugin apiである_dispatchを呼び出した結果に対し、レイアウトを無視して描画しています。

これによって、フィルターの実行なども考慮しつつ、actionのレンダリング結果をParts的に利用する事が出来ます。

posted by Png genki on Mon 5 Jan 2009 at 04:55

merb_babel はmattettiさんが開発しているmerb用のi18n/l9nライブラリです。

オリジナルのmerb_babelは、ブラウザが渡すHTTP_ACCEPT_LANGUAGEを考慮して、ユーザのロケールを自動判別する機能が無かったので、実装を追加してみました。

こんな感じに使います。

img

PokéDia の今日の出来事情報を管理するためのバックエンドとなるサービスの開発に利用しています。

posted by Png genki on Mon 5 Jan 2009 at 01:41
Contents
merb_componentプラグインを作りました
コントローラのアクションをParts的にレンダリングする方法
merb_babelにISO国コード自動判別機能をつけてみました
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ