0

make_suggestionAJAX リクエストを Rails コントローラー ( のメソッド)に送信しようとしていますitems controller

私は次のJavaScriptを持っています:

$.ajax({
  url: "/items/make_suggestion",   // pass to make_suggestions in recipes controller
  type: "POST",     
  dataType: 'json', 
  data: parsed_data // a Javascript object/data hash
});

debug(params) をオンにすると、params に parsed_data が表示されません。

誰が間違っているのか指摘できますか?また、AJAX を起動して Rails のパラメーターにシンボルを作成するにはどうすればよいですか?


アップデート

私のコントローラーには、

def make_suggestion
    respond_to do |format|
        format.html 
        format.json { render :json => params }
    end
end

私のajaxコード:

$.ajax({
  url: "http://localhost:3000/items/make_suggestion",   // I'm doing the proper routing later, since '/make_suggestion' routes to 'items/1/make_suggestion'
  type: "POST",     
  dataType: 'json', 
  data: parsed_data,
  success: function(returned_value){
            if(returned_value)
                alert('true');
            $('.test').append(returned_value);
        }, 
  error: function(returned_value){
        $('.test').html('<p>Error in AJAX request</p>');
        alert('Not working');
  }
});

そして、私の parsed_data は次のようになります。

パラメータ: {"data1"=>{"position"=>"1", "item_id"=>"item_1",​​ "to_do"=>"unknown ", "selected"=>"false"}, "data2"= >{"position"=>"2", "item_id"=>"item_2", "to_do" =>"unknown", "selected"=>"false"}, "data3"=>{"position"=> "3", "item_id"=>"item_3 ", "to_do"=>"unknown", "selected"=>"false"}, "data4"=>{"position"=>"4", "item_id " =>"item_4", "to_do"=>"unknown", "selected"=>"false"}, "data5"=>{"position"=>"5" , "item_id"=>"item_5", "to_do"=>"unknown", "selected"=>"false"}}

しかし、/items/make_suggestion.json に移動すると、次のようにしか表示されません。

{"action":"make_suggestion","controller":"recipes","format":"json"}

4

2 に答える 2

0

複数の方法でパラメータを表示/トレースできます

1) rails のログ ファイルtail -f log/development.logを追跡します。通常、Rails Web サーバーは、起動するとコンソールへの追跡を開始することに注意してください。

2) 例外を発生させ、ブラウザーでデバッグ出力を表示する

3) ブラウザで JavaScript コンソールを使用します (一部は組み込み型です)。Firebug プラグを備えた Firefox も検討してください (「コンソール」タブを使用)

Rails ログのテーリング

logger.ap paramsRails サーバーに対して行われるすべてのリクエストは、渡されたすべてのパラメーター、およびリクエストを受け取ったコントローラーとアクション、および生成されたすべての SQL ステートメントを表示します。読みやすい出力を提供します

例外を発生させる

頻繁には必要ありませんがraise "ZOMG"、コントローラー アクションの最初の行として追加すると、html 出力がレンダリングされ、渡されたすべてのパラメーターが表示されます。これは ajax 呼び出しにはほとんど役に立たない

Javascript コンソール

これにより、すべての ajax リクエストと、javascript が Rails サーバーに送信しているすべてのパラメーター、および返されるすべてのデータも表示されます。非常に便利です。

Rails は JavaScript の ajax パラメーターを ruby​​ ハッシュにマップします。これらのデータ構造はブラウザーでも Rails とほぼ同じなので、これは非常に便利です。

// javascript data structure
var parsed_data = {
  foo: "FOO",
  bar: "BAR",
  person: {
    first_name: "Joe",
    last_name: "Smith"
  }
}

awesome_print を使用してログに出力すると、次のようなルビー ハッシュが生成されます。

logger.ap params

{
   :foo => "FOO",
   :bar => "BAR",
   :person => {
    :first_name => "Joe",
     :last_name => "Smith"
   }
}

# access the data
params[:foo]
# => "FOO"
params[:person][:first_name]
# => "Joe"
于 2013-07-20T15:21:24.807 に答える