Я понимаю, что если вы укажете правильные заголовки содержимого, то Rails автоматически построит хэш-параметры params в ожидаемом формате. Тем не менее, у моего параметра hash есть некоторые... ну... проблемы. Вот некоторая информация
Угловой запрос 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 собирает запрос, но неправильно форматирует данные запроса. Вот мой метод создания рельсов.
def create
@person = Person.new.(params[:person])
puts params[:person] # writes to Console
if @person.save
render json: @person
end
end
Здесь информация из отладчика rails из моего оператора 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'
Что я делаю неправильно, кроме программирования в субботу вечером?
я думаю это
@person = Person.new.(params[:person])
не должно быть лишних .
и вместо этого
@person = Person.new(params[:person])
Помимо того, что упоминалось выше Майлза, главная проблема заключалась в том, что я использовал сильные параметры неправильно.
Я сделал это:
@person = Person.new(params[:person])
Вместо этого:
@person = Person.new(person_params)