2015-12-05 2 views
0

Я работаю над веб-службой в Rails, которая получает данные в формате JSON из другого приложения Rails. Когда веб-служба получает данные, она считывает их, но не вставляет в базу данных. Это из файла журнала:Получен JSON in Rails API не хранится

Processing by OrdersController#create as JSON Parameters: {"name"=>"dst", "address"=>"dst", "email"=>"sdt"} [1m[36m (0.2ms)[0m [1mbegin transaction[0m [1m[35mSQL (0.5ms)[0m INSERT INTO "orders" ("created_at", "updated_at")

Что я должен сделать, чтобы получить эти данные внутри заявлении INSERT? Нужен ли мне новый файл json.jbuilder или что-то еще? Что мне не хватает?

Обновление: введите здесь код контроллера #. Не вставлял его изначально, потому что он по умолчанию создан из генератора эшафота.

# POST /orders 
    # POST /orders.json 
    def create 
    @order = Order.new(order_params) 
     respond_to do |format| 
     if @order.save 
      format.html { redirect_to @order, notice: 'Order was successfully  created.' } 
      format.json { render :show, status: :created, location: @order } 
     else 
      format.html { render :new } 
      format.json { render json: @order.errors, status: :unprocessable_entity } 
     end 
     end 
    end 
+0

обеспечивает контроллер (сервис/модель, по существу, это часть приложения, которая вызывает метод сохранения) код таким образом, мы можем увидеть, что работать, и почему она не может быть как ожидалось. – djaszczurowski

+0

Будет полезно, если вы можете поместить свой код в 'OrdersController # create'. – Yang

+0

Обновлен с кодом. Это созданный по умолчанию контроллер с эшафота. Я не был уверен, что и что нужно добавить/изменить, чтобы помочь с тем, что я пытаюсь достичь. – MZokov

ответ

0

order_params предположительно определен где-то в OrdersController. Параметры Обычно модель в запросе вложены под ресурсом ({order: {"name"=>"dst", "address"=>"dst", "email"=>"sdt"}), а затем в order_params будет

def order_params 
    params.require(:order).permit(:name, :address, :email) 
end 

Но если вы не можете изменить полезную нагрузку JSON, можно просто Никс require(:order) части и вызвать params.permit(:name, :address, :email).

Вы можете прочитать в Rails руководство по Strong параметров здесь: http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters

+0

Да, это был запрос '.permit', который требовался. Я попытался с параметрами [: name,: address,: email], но появилась другая ошибка. Я не знал о. Так что спасибо! – MZokov