我理解它的方式是,如果您指定了正确的内容标头,那么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
声明
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'
除了星期六晚上的节目外,我做错了什么?
答案 0 :(得分:3)
我想这个
@person = Person.new.(params[:person])
不应该有额外的.
而是
@person = Person.new(params[:person])
答案 1 :(得分:0)
除了Miles上面提到的拼写错误之外,主要问题在于我错误地使用了强参数。
我这样做了:
@person = Person.new(params[:person])
而不是:
@person = Person.new(person_params)