0

私は現在、jQuery を使用する rails3 アプリケーションに取り組んでいます。ユーザーが行った選択に基づいて JSON データの配列を返す JavaScript プラグインがあります。このデータ配列を Java スクリプト プラグインから読み取り、それを Rails アプリケーションにポストして保存する保存ボタンがあります。JavaScript は機能しているようで、正しい ajax 呼び出しを行い、データを Rails アプリケーションに送り返します。問題は、Rails がサーバーに PUT されたデータをエンコードする方法にあるようです。

問題は、レール アプリケーションにポストバックしようとしているネストされたデータです。私が期待している値のハッシュではなく、1 つの長い文字列として扱われているように見えるシフトの配列があります。これは、データレールが取得している出力です。

パラメータ: {"shifts"=>"[{\"start_time\":\"Wed Oct 06 2010 09:30:00 GMT+0100 (BST)\",\"end_time\":\"Wed Oct 06 2010 13 :00:00 GMT+0100 (BST)\",\"active\":true,\"occurrence\":\"weekly\",\"company_id\":\"1\"},{\"start_time \":\"Thu Oct 07 2010 09:30:00 GMT+0100 (BST)\",\"end_time\":\"Thu Oct 07 2010 13:00:00 GMT+0100 (BST)\",\ "active\":true,\"occurrence\":\"weekly\",\"company_id\":\"1\"}]", "id"=>"1"}

その後、コントローラーで次のコードを使用できると期待しています

params[:shifts].each do |shift|
  puts shift.inspect # would expect a hash of values here
end

ただし、値のハッシュの代わりに単一の文字列があります。Railsがハッシュ値を期待どおりにエンコードしない理由についての提案。

4

1 に答える 1

0

最初に JSON として解析する必要があると思います。コントローラーの上部に「require 'json'」を入力してから、JSON.parse(params[:shift]).each {|shift| を試してください。shift.inspect} .

于 2010-10-06T13:05:20.897 に答える