Angular2 Rails Backend Post от json

0

Я понимаю, что если вы укажете правильные заголовки содержимого, то 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'

Что я делаю неправильно, кроме программирования в субботу вечером?

  • 0
    Я не знаком с Ruby, но это не проблема2. Проверьте этот ответ .
Теги:
angular

2 ответа

3

я думаю это

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

не должно быть лишних . и вместо этого

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

Помимо того, что упоминалось выше Майлза, главная проблема заключалась в том, что я использовал сильные параметры неправильно.

Я сделал это:

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

Вместо этого:

@person = Person.new(person_params)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню