おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

Javascriptの中からnamed routeを使えるよ

はじめてちゃんとCoffeeScriptに触りはじめているのですが、Javascript内から、Railsのroutesで定義したnamed routesを使いたくなるシーンがありました。
はて、どうやるのかなと調べてみたら、ちゃんとそのための JsRoutesというgemが作られていました。すばらしいです。

Gemfileに以下を追加します。

gem "js-routes"  

bundle installしたあとで、consoleなどで以下を実行します。

9:53:24 (2.67) % bundle exec rails c  
Loading development environment (Rails 4.0.0.beta1)  
irb(main):001:0> JsRoutes.generate!("app/assets/javascripts/kaeru_routes.js")  

第1引数には出力先のファイル名を指定します。他にもいろいろオプションが指定できるようです。

すると、app/assets/javascripts/kaeru_routes.jsというファイルが生成されます。
このファイルをmanifestファイルで指定してあげれば、あとは簡単にJavascript内からnamed routesが使えるようになります。

$ ->  
  $("ul.socialButton").each ->                                                                        
    articleId = $(@).data("articleId")                                                                
    console.log(Routes.article_path(articleId))  

テストで上のようにやってみると、”articles/1”というように、routesで定義したpathが返ってきました。
Routes.article_pathのように、Routesの関数名としてnamed routeを指定すればOKです。
素敵ですね。