2012-02-28 7 views
1

写真を含むネストされたパラメータを持つフォームを取る比較的簡単なRailsアプリケーションがあります。それは次のようになります。RestKitとRKParamsの問題

class List < ActiveRecord::Base 
    has_many :list_items 
    has_many :people, through: list_items 
end 

class ListItem < ActiveRecord::Base 
    belongs_to :list 
    belongs_to :person, autosave: true 

    has_attached_file :picture, 
    :storage => :s3, 
    :bucket => 'myfreebielist', 
    :s3_credentials => { 
     :access_key_id => ENV['S3_KEY'], 
     :secret_access_key => ENV['S3_SECRET'] 
    } 


    def autosave_associated_records_for_person 
    if new_person = Person.find_by_name(Person.name) then 
     self.person = new_person 
    else 
     self.person.save! 
    end 
    end 
end 

class Person < ActiveRecord::Base 
    has_many :list_items 
end 

私はちょうどすべてが動作することを確認するために、テストの新しいフォームを設定し、それがない、素晴らしく、かなり:

<%= form_for @list do |f| %> 
    List name: <%= f.text_field :name %><br/> 
    <%= f.fields_for :list_items do |lif| %> 
    <%= lif.fields_for :person do |pif| %> 
    Person name: <%= pif.text_field :name %> 
    <% end %> 
    Picture: <%= lif.file_field :picture %> 
    <br/> 
    <% end %> 
    <%= f.submit %> 
<% end %> 

OK、私はできるようにしたいですリスト項目(および関連する画像画像)を含む新しいリスト、およびそのリスト項目の人物を投稿する。

NSMutableDictionary *listParams = [NSMutableDictionary dictionary]; 
[listParams setValue:@"Test One" forKey:@"name"]; 

NSMutableDictionary *listItems = [NSMutableDictionary dictionary]; 

// Generate each list item -- a person and a photo. 
NSDictionary *person1 = [NSDictionary dictionaryWithKeysAndObjects:@"name", @"John Smith", nil]; 
NSDictionary *listItem1 = [NSDictionary dictionaryWithKeysAndObjects:@"person_attributes", person1, nil]; 
[listItems setValue:listItem1 forKey:@"0"]; 
[listParams setValue:listItems forKey:@"list_items_attributes"]; 

NSMutableDictionary *params = [NSMutableDictionary dictionary]; 
[params setValue:listParams forKey:@"list"]; 

[[RKClient sharedClient] post:@"/lists" params:params delegate:self]; 

これはまた、画像の顕著な不在で、正常に動作します:私は、私はObjective Cの中でテストしています。このコードを持っています。

は今、私の代わりにNSDictionaryRKParamsを使用すると、あなたがこのタイプのリクエストを処理することになっている方法ですが、私はRKParamsを使用して投稿する際に、レール側に到着する奇妙なことのすべての方法があることを理解して - キーの周りに改行、スペース、物事がたくさんあります。\n私は、person1の一部として添付ファイル付きのRKParamsを使ってみましたが、オブジェクトRKParamsオブジェクトの名前の文字列表現を送信するようです。

私はそうだと感じていますが、近づいていますが、私は数時間前からこれに対して頭を打っています。どんな助けもありがとう。

環境:Xcode 4.3、Rails 3.2.1。

答えて

0

答えは:JSONです。 JSONをサポートするようにサーバーを調整する必要がありました。それはすべてのスペースと\nの約です。自己への注意:どのように動機付けられていても、全員をプログラムしないでください。

+0

こんにちはTim、JSONをサポートするようにサーバーを調整するとどういう意味ですか?私はRKと同じ問題に直面しています。私はこの問題に遭遇します。ありがとう! –

+0

実際、私の問題は解決しませんでした。私はその後AFNetworkingに移り、問題を解決しようとしました。私は新しく創造的な問題を抱えています。私が意味していたことは、「respond_to:json」をコントローラに追加する必要があるということでした。 –

+0

私の他の同様の問題に関するいくつかの情報:ネストされたNSDictionaryが\ nと空白に問題を引き起こしていました。ネストされたキーの値としてNSDictionaryではなくテキストで手動でネストされたキーを持つ単一のNSDictionaryを送信します。 –

関連する問題