2017-11-20 12 views
0

Rubyで構築されたRESTFUL APIへのポストリクエストを作成した後に、user_id、created_at、およびupdated_atテーブルからnull値を取得しています。ホワイトリストのパラメータのほとんどの値は送信されますが、送信されないnull値(私の前提)のために「ロールバック」されます。 !REST API POST要求がNull値を表示するRuby on Railsに組み込まれました

https://s7.postimg.org/9m5v1m2u3/Screen_Shot_2017-11-20_at_12.01.58_PM.png) [NULL値が示す]

https://s7.postimg.org/h5yy3ngl7/Rollback.png) [ターミナルに示すrollsbackエラーここで

は、APIのコントローラである:ここ

class Api::V1::GigsController < ApplicationController 
before_action :authenticate_user!, except: [:index, :show] 

skip_before_action :verify_authenticity_token 
    def index 
     @gig_items = Gig.all 
     render json: @gig_items 
    end 


    def create 
     @gig_item = Gig.create(gig_params) 
     render json: @gig_item 
    end 



    def show 
     @gig_item = Gig.find(params[:id]) 
     render json: @gig_item 
    end 

private 

    def gig_params 
     params.require(:gig).permit(:title, :category, :description, :price, :main_image, :thumb_image, :status, category_ids: []) 
    end 
end 

でありますアクションクリエイターとアクシオを使用した後のリクエストコール

const ROOT_URL= "http://localhost:5000/api/v1/gigs" 

export function createGig(values){ 
const request = axios.post(`${ROOT_URL}`, values); 

return { 
    type: CREATE_GIG, 
    payload: request 
} 

} 

とポスト要求アクションを処理するためにReduxの形式を使用して送信し、検証するためのパラメータ:自分のアプリケーションでPOSTリクエストを行う場合、それはのcreated_at、updated_atのにnull値を生成する理由として

onSubmit(values){ 
    this.props.createGig(values); 
} 


render(){ 
    const { handleSubmit } = this.props; 
    return(
     <form onSubmit={handleSubmit(this.onSubmit.bind(this))}> 
      <Field 
       label="Title of Gig" 
       name="title" 
       component={this.renderField} 
      /> 
      <Field 
       label="Categories" 
       name="categories" 
       component={this.renderField} 
      /> 
      <Field 
       label="Description" 
       name="description" 
       component={this.renderField} 
      /> 
       <Field 
       label="Price" 
       name="price" 
       component={this.renderIntegerField} 
      /> 
       <Field 
       label="Status" 
       name="status" 
       component={this.renderIntegerField} 
      /> 
      <Field 
       label="Main Image" 
       name="main_image" 
       component={this.renderField} 
      /> 
      <Field 
       label="Thumb Image" 
       name="thumb_image" 
       component={this.renderField} 
      /> 

      <button type="submit" className="btn btn-success">Submit</button> 
      {" "} 
      <Link to={'/gigs'}><button type="submit" className="btn btn-danger">Cancel</button></Link> 

     </form> 
     ) 
} 
} 
export default reduxForm({ 
validate, 
form: 'GigsNewForm' 
})(

任意の考えとuser_idが他のものは問題ないようです。

+0

おそらく、あなたは合格していない検証がありますか? '@gig_item = Gig.create!(gig_params)'を試して、検証エラーが出るかどうか確認してください。 – jvillian

+0

私は私の問題の解決策を考え出しました。私はユーザ認証のためにdevisを使用していたことを認識しました。私はcurrent_userをcreateアクションに追加し、nullを返すパラメータを正常に渡すことができました。ご協力いただきありがとうございます。 – Jonathan

答えて

0

HTTP APIを扱う際には、どのような応答が得られているかを知るためにHTTPステータスコードに注意する必要があります。

この場合、レコードが保存されていません(検証エラーのためかもしれません)。これがnull値を取得している理由です。あなたはおそらくそのレスポンスで422ステータスコードを取得しているでしょう。つまり、何かが間違っていたことを意味します。

0

私はもともと私が持っていたAPIコントローラに

を見直すことで、それを考え出したことができました:

def create 
    @gig_item = Gig.create(gig_params) 
    render json: @gig_item 
end 

その後、私は、私はそれゆえ、私は追加したユーザ認証のために考案し使用していたが実現:

def create 
     @gig_item = **current_user**.gigs.create(gig_params) 
     render json: @gig_item 
end 

nullを返すパラメータを正常に渡すことができました。

関連する問題