2011-12-13 17 views
0

(node.jsとcouchDBに基づいて)このサードパーティAPIに投稿しようとしています すでにこのAPIに正常に投稿されている機能するPHPアプリケーションがありますが、レール上でルビーを動かすと、私はテストサイトを接続しようとしています。Ruby on RailsからJSONをPOSTする

私が作成しなかったPHPアプリケーションでは、cURLを使用してPOSTVARSをjavascriptのドット表記のように表示されたエンコードされた変数に設定しています。

HTTPartyを使用しているので、私の投稿データをJSONに変換して送信すると、HTTPartyでpost varsがハッシュでなければならないからです。

投稿データをエンコードせずに送信すると、不正な形式のJSONエラーが発生します。

多次元ハッシュを、キーがその値のJSONドット表記であるキー値ペアの配列に変換する簡単な方法はありますか?

私は解決のためにこれらの記事を見ましたが、私はかなりルビーとレールに新しいので、まだ進歩はまだありません。

http://www.goodercode.com/wp/convert-your-hash-keys-to-object-properties-in-ruby/

これは素晴らしい記事ですが、私はあなたがそのコードを実装かどうかはわかりません。私はそれを/ libディレクトリのhashify.rbファイルに入れて再起動しましたが、まったく動作していないようです。

私はまた、このようなクラスを書いてみました:私はそれが再帰的である必要が

class Hashify 

def initialize(hash) 
    hash.each do |k, v| 

    k=k.gsub(/\.|\s|-|\/|\'/, '_').downcase.to_sym 

    self.instance_variable_set("@#{k}", v) ## create and initialize an instance variable for this key/value pair 
    self.class.send(:define_method, k, proc { self.instance_variable_get("@#{k}") }) ## create the getter that returns the instance variable 
    self.class.send(:define_method, "#{k}=", proc { |v| self.instance_variable_set("@#{k}", v) }) ## create the setter that sets the instance variable 
    end 
end 
end 

From here

答えて

2

実際の問題は何か分かりませんが、Railsプロバイダはハッシュをparamsに変換する非常に単純な方法ですが、おそらく問題には合致しません。

>> {:a => {:b => :c}}.to_param 
=> "a%5Bb%5D=c" 
1

「JBuilderはあなたに巨大なハッシュ構造をマッサージビートJSON構造を宣言するための簡単なDSLを提供します。」それは私が探しているものを、おそらく非常に興味深いとです....

https://github.com/rails/jbuilder

+0

OOOO:

これは、あなたが探しているものかもしれません。これがうまくいけば、私は戻ってきて、それを答えとしてマークします。ありがとう! – afxjzs

関連する問題