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です。
素敵ですね。