2011-10-23 20 views
0

jqueryのドラッグ可能で削除可能な関数を使用しています。要素が削除されたときに、パラメータをクエリ文字列として渡してajax呼び出しが開始されます。私はクエリ文字列を渡す方法を知っています。しかし、私はクエリ文字列のパラメータでいくつかの条件付きのチェックを行う必要があります。私はそれがどのようにできるかわかりません。以下の私のコードを見つけてください。Jquery ajaxでルビパラメータをクエリ文字列として渡します。

jQuery('#<%= qtr %>').droppable({ 
    hoverclass: 'e_high', 
    accept: function(elm) { 
     if (jQuery(this).hasClass('<%=name%>_edit')) 
      return true; 
     }, 
     drop: function() { 
      jQuery.ajax({ 
       type: "POST", 
       url: '/sections/reorder?site_id=<%[email protected]%>&page=<%[email protected]%>?<%[email protected]%>:nil&ref_id=<%=section.id%>&name=<%=name%>' 

上記のクエリ文字列の渡し方は正しいですか。いいえメソッドのエラーが表示されます。オブジェクトはありません。 {"page"=>"", "site_id"=>"11650ecf55668fed9e7a624c93adcba2"}は、一つには、お使いの三元疑問符とコロンが間違った場所にある

+0

質問は明らかではない。

そして、いくつかの理由で、POSTリクエストをGETクエリ文字列を使用する必要がある場合、あなたはこのような何かをしたいと思います

。 nilメソッドの問題については、@変数が定義されていない可能性があります。どんな種類の条件文を書いておきたいですか?私のアドバイス:ルビーとJSコードを混ぜてはいけません。 partialから呼び出すpure-JS関数(.jsファイル)を使用します(Ruby引数では常に:argument.to_json) – tokland

答えて

1

、彼らは内部ERBの区切り文字でなければなりません:私は、端末をチェックするとparamsがパラメータです。 $.ajaxの場合はdataオプションを使用する方が良いでしょう。これはクリーナーになるだけでなく、POSTリクエストでGETパラメーターを使用しないようにします。そして、あなたはJavaScriptでescape_javascriptを使ってあなたの値をエスケープする必要があります。このようにそれを試してみてください。

jQuery.ajax({ 
    type: "POST", 
    url: '/sections/reorder', 
    data: { 
     site_id: '<%= j(@site.id) %>', 
     page: '<%= j(@page ? @page.id : '') %>', 
     ref_id: '%<= j(section.id) %>', 
     name: '%<= j(name) %>' 
    }, 
    //... 

これはsectionnameはRubyの変数ではなく、クライアント側のJavaScript変数としてERBに利用可能であることはもちろん前提としています。

url: '/sections/reorder?site_id=<%= j(@site.id) %>&page=<%= j(@page ? @page.id : '') %>&ref_id=<%= j(section.id) %>&name=<%= j(name) %>' 
関連する問題