jQueryでAjaxを実装しており、通信先のURLを動的に指定したいです。
Ajaxのurl指定部分はこのように実装しようとしています。
url: "<%= url_for(:controller => 'books', action: => 'edit', :id => <動的に指定>) %>"
idを動的に指定するため、<動的に指定>の部分にjavascriptの変数を設定すれば良いかと考えていました。
しかし、<%= %>の記述中にjavascriptの変数を指定すると、変数名のリテラルがそのままidパラメータとして認識されてしまいます。
<%= %>の記述中にjavascriptの変数を使う方法はありますでしょうか?
もしくは、別の方法で実現できる方法があればそちらの回答もお待ちしております。
これでいけるか分かりませんけどquick hack的には以下でどうでしょう?
url: "<%= url_for(:controller => 'books', action: => 'edit', :id => 'dynamic_id_replace_tag') %>".replace("dynamic_id_replace_tag",<javascript変数>)
'dynamic_id_replace_tag'というidパラメータがURLにそのままあるだろうから、その部分をjavascriptのreplaceメソッドで置換するようなコードにしました。
前後がないですけど、おそらくこの部分に式はおけるだろうと思います。
別の方法としては、rubyのurl_forをjavascriptで実装する。と言っても、URLの生成ルールが変わることがないか、変わったらその時はまた修正する事にするなら、たとえば下記のように直書きで良いことになります。
(例)url: "/hogehoge/books/edit/"+<javascript変数>
メンテ的には素直じゃないかも知れないけれど、生成されたコード的には素直です。
あと、これが出来れば一番素直かもしれないのが、idを動的に生成するjavascriptのコードをrubyで実装する方法です。
Rails 3.0.5
Ruby 1.9.2p290