RailsのERBについて質問です。


jQueryでAjaxを実装しており、通信先のURLを動的に指定したいです。
Ajaxのurl指定部分はこのように実装しようとしています。

url: "<%= url_for(:controller => 'books', action: => 'edit', :id => <動的に指定>) %>"

idを動的に指定するため、<動的に指定>の部分にjavascriptの変数を設定すれば良いかと考えていました。
しかし、<%= %>の記述中にjavascriptの変数を指定すると、変数名のリテラルがそのままidパラメータとして認識されてしまいます。

<%= %>の記述中にjavascriptの変数を使う方法はありますでしょうか?
もしくは、別の方法で実現できる方法があればそちらの回答もお待ちしております。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/03/26 23:55:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

ポイント200pt

これでいけるか分かりませんけど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で実装する方法です。

  • id:Gaasu
    バージョンの記載が漏れていました。

    Rails 3.0.5
    Ruby 1.9.2p290

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません