写真を含むネストされたパラメータを持つフォームを取る比較的簡単な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の中でテストしています。このコードを持っています。
は今、私の代わりにNSDictionary
のRKParams
を使用すると、あなたがこのタイプのリクエストを処理することになっている方法ですが、私はRKParams
を使用して投稿する際に、レール側に到着する奇妙なことのすべての方法があることを理解して - キーの周りに改行、スペース、物事がたくさんあります。\n
私は、person1
の一部として添付ファイル付きのRKParams
を使ってみましたが、オブジェクトRKParamsオブジェクトの名前の文字列表現を送信するようです。
私はそうだと感じていますが、近づいていますが、私は数時間前からこれに対して頭を打っています。どんな助けもありがとう。
環境:Xcode 4.3、Rails 3.2.1。
こんにちはTim、JSONをサポートするようにサーバーを調整するとどういう意味ですか?私はRKと同じ問題に直面しています。私はこの問題に遭遇します。ありがとう! –
実際、私の問題は解決しませんでした。私はその後AFNetworkingに移り、問題を解決しようとしました。私は新しく創造的な問題を抱えています。私が意味していたことは、「respond_to:json」をコントローラに追加する必要があるということでした。 –
私の他の同様の問題に関するいくつかの情報:ネストされたNSDictionaryが\ nと空白に問題を引き起こしていました。ネストされたキーの値としてNSDictionaryではなくテキストで手動でネストされたキーを持つ単一のNSDictionaryを送信します。 –