2016-12-01 8 views
1

このAPIを動作させようとしていますが、解決方法がわからないこのエラーが発生しました。タイトルに誤りがあります。 Googleクロム。paramが存在しないか、値が空です。会社

localhost:3000/companies 

で投稿リクエストを行いました。 CompaniesController#create のparamに

ActionController :: ParameterMissingの下に次のようになりますどちらが欠けているか、値が空である:会社

def company_params 
(this line is highlighted) params.require(:company).permit(:name, :phone, :email, :website, :address, :customer_id, :additional_info) 
end 
end 
    Request 

Parameters: 

{"name"=>"harun"} 

私は、rails-apiを生成avtive_model_serializerrack-cors gemを追加しました。 corsにはconfig/applicationが変更されました。

そして、会社の足場を作りました。

Gemfile

gem 'active_model_serializers', '~> 0.10.0' 
gem 'rack-cors' 

設定/ application.rb

config.middleware.insert_before 0, "Rack::Cors" do 
    allow do 
    origins '*' 
    resource '*', :headers => :any, :methods => [:get, :post, :options] 
    end 
end 

APP /シリアライザ/ company_serializer.rb

class CompanySerializer < ActiveModel::Serializer 
attributes :id, :name, :phone, :email, :website, :address, :customer_id, :additional_info 
end 

コントローラ/ companies_controller.rb

class CompaniesController < ApplicationController 
    before_action :set_company, only: [:show, :update, :destroy] 
    def index 
    @companies = Company.all 
    render json: @companies 
    end 

    def show 
    render json: @company 
    end 

    def create 
    @company = Company.new(company_params) 
    if @company.save 
     render json: @company, status: :created, location: @company 
    else 
     render json: @company.errors, status: :unprocessable_entity 
    end 
    end 

    def update 
    @company = Company.find(params[:id]) 

    if @company.update(company_params) 
     head :no_content 
    else 
     render json: @company.errors, status: :unprocessable_entity 
    end 
    end 

    def destroy 
    @company.destroy 

    head :no_content 
    end 

    private 

    def set_company 
     @company = Company.find(params[:id]) 
    end 

    def company_params 
     params.require(:company).permit(:name, :phone, :email, :website, :address, :customer_id, :additional_info) 
    end 
end 

答えて

1

あなたは{"company" => { "name"=>"harun"} }を渡す必要が{"name"=>"harun"}パラメータを渡しています。郵便配達で

(あなたはJSONデータを送信する場合)は、このデータを送信します

{"company":{"name":"harun"}} 

フォームデータを送信する場合は、この送信:強力なパラメータで

company[name] = "harun" 

を、そしてエラーが時に上昇しています必要なパラメータが見つかりません:

params.require(:company) 
+0

はTONをYes.THANKS。私は会社[名前]をして働いた。ありがとう。 – IlearnedThat

2

リクエストパラメータは次のようにする必要があります。

{ 
    company: { 
     name: 'ABC' 
    } 
} 

あなたのcompany_params関数でrequire(:company)を指定しました。これは、あなたのパラメータで会社のキーを探すことを意味します。

ポストマンである - 会社[名前]:ABC

+0

正しい方法を示してくれてありがとうございます。私は会社[名前]を行って解決しました。 :)あなたの助けにトーンをありがとう – IlearnedThat

関連する問題