使用json返回已创建的rails项的id

时间:2012-10-09 18:37:28

标签: ruby-on-rails xcode json

在XCode(iOS)中,我使用JSON访问rails数据库。我已经创建了特定的操作来从数据库中检索数据并将数据输入数据库。

我想在我的数据库中插入一条记录,并立即返回所创建对象的id。但我无法找到将这些行动“联系起来”的方法。

为了插入数据,我使用这样的请求:

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://..."]];
    [request setHTTPMethod:"@POST"];
    [request addValue:@"application/json" forHTTPHeaderField:@"content-type"];
    NSData *objectData = [NSData alloc];
    NSError *parseError = nil;
    objectData = [NSJSONSerialization dataWithJSONObject:myData options:NSJSONWritingPrettyPrinted error:&parseError];
    [request setHTTPBody:objectData]; 

对于数据检索,我使用以下内容:

    NSMutableArray *myArray = [[NSMutableArray alloc] init];

    NSData *myContent = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];
    NSError *parseError = nil;
    NSInputStream *myStream = nil;

    myStream = [[NSInputStream alloc] initWithData:myContent];
    [myStream open];

   myArray = [NSJSONSerialization JSONObjectWithStream:myStream options:NSJSONReadingAllowFragments error:&parseError];

1 个答案:

答案 0 :(得分:0)

我认为在控制器json动作中你可以使用像

这样的东西
def json 
  #-- do your magic to fill @object --
  if @object.save
    respond_to do |format|
      format.json { render :json => {:id => @object.id} } # Return the id
      # format.json { render :json => @object } #You can return the whole object
      format.html { render :string => "#{@object.inspect}" }
    end
  else
    render :json => {:error => "OMG Failed to save the model!"} 
  end
end