2011-08-20 1 views
2

내 문제는 iphone 시뮬레이터에서 다음 코드를 사용하여 새 게시물을 작성하기 위해 레일즈 서버에 POST 할 때 매개 변수가 두 번 전송된다는 것입니다. 당신이 볼 수있는NSURL을 사용하여 JSON을 사용하여 레일스 서버에 새 게시물을 만들 때 반복되는 파라미터

Processing by PostsController#create as JSON 
Parameters: {"title"=>"wwd", "description"=>"wwwwwww", "post"=>{"title"=>"wwd", "description"=>"wwwwwww"}} 

은, 제목과 설명은 다음과 같습니다 내가 요청을 보낼 때

{"title":"wwd","description":"wwwwwww"} 

는, 레일 서버로 매개 변수를 보여줍니다는 NSString의 tojson 가정

NSDictionary *thestuff = [NSDictionary dictionaryWithObjectsAndKeys: 
         titleIs, @"title", 
         descIs, @"description", nil]; 
NSString *tojson = [thestuff JSONRepresentation]; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request addValue:@"form-data" forHTTPHeaderField:@"Content-Disposition"]; 
[request setHTTPBody:[tojson dataUsingEncoding:NSUTF8StringEncoding]]; 
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

이 포함 이것에 따라 두 번 보냈습니다. 이 문제를 해결할 수있는 방법이 있습니까? 그러면 사용자 이름과 비밀번호를 게시하려면 게시를 사용하면 보안 문제가 발생할 수 있습니까? 게시물은 내가 원하는대로 생성되지만 실제로이 이중 매개 변수 게시를 수정하려고합니다.

+0

에/초기화/wrap_parameters.rb

wrap_parameters format: [:json] if respond_to?(:wrap_parameters) 

사용할 수있는 다른 옵션에 대해 읽어 거짓

wrap_parameters false 

설정에서이를 변경하여 해제 할 수 있습니다 그것은 문제가 iOS 코드가 아닌 백엔드에서 발생하는 것 같습니다. –

+0

글쎄, 서버는 Ruby on Rails의 스캐 폴딩을 사용하여 만들었습니다. 또한 내가 새 게시물을 작성하기 위해 웹 페이지를 사용하여 게시물을 만들 때 이런 일이 발생하지 않습니다. – HDJ

답변

1

필요에 따라 변경할 수있는 이상적인 동작입니다. 이 값은 ParamsWrapper이라는 속성이 ActionController에 있고, documentation here을 읽을 수 있습니다.

ActiveRecord 개체의 동작에 대해 CreateUpdate 동작에 래핑 된 매개 변수를 쉽게 지정할 수 있도록 기본 설정되어 있습니다.

당신은 ruby docs

관련 문제