首页 文章

来自json的Angular2 Rails Backend Post

提问于
浏览
0

我理解它的方式是,如果你指定正确的内容头,Rails将自动以它期望的格式构建params哈希 . 但是,我的params哈希有一些......好吧......问题 . 这是一些信息

Angular 2 http请求

onSubmit(values:any) : void {

  var headers = new Headers();
  headers.append('Content-Type', 'application/json');

  this.http.post("http://localhost:3000/people/",JSON.stringify(values),{ headers: headers })
    .subscribe((res: Response) => {
      this.data = res.json();
      this.loading = true;
  });
}

Rails接收请求但错误地格式化请求数据 . 这是我的rails创建方法 .

def create
  @person = Person.new.(params[:person])

  puts params[:person] # writes to Console

  if @person.save
     render json: @person
  end
end

这是来自我的 puts 语句的rails debugger的信息

Parameters: {"name"=>"Christopher", "age"=>"37", "person"=>{"name"=>"Christopher", "age"=>"37"}}

和剩下的错误:

Completed 500 Internal Server Error in 0ms (ActiveRecord: 0.0ms)

NoMethodError (undefined method `call' for #<Person:0x007fec515761c0>):
app/controllers/people_controller.rb:16:in `create'

除了星期六晚上的节目外,我做错了什么?

2 回答

  • 3

    我认为这

    @person = Person.new.(params[:person])
    

    不应该有额外的 . 而是

    @person = Person.new(params[:person])
    
  • 0

    除了Miles上面提到的拼写错误之外,主要问题在于我以错误的方式使用强参数 .

    我这样做了:

    @person = Person.new(params[:person])
    

    而不是这个:

    @person = Person.new(person_params)
    

相关问题