2016-04-13 2 views
0

私はユーザーから入力を取得し、その入力を変数に割り当ててからAPIに投稿しようとしています。railsコントローラのAPI呼び出しにどのように変数を割り当てますか?

 @options = { 
    :credentials => { 
    :account_id => "12345", 
    :api_key => "mysecretapikey123456" 
    }, 
    :product => "criminal_database", 
    :data => { 
    :FirstName => params[:firstName], 
    :LastName => params[:lastName], 
    :MiddleName => params[:middleName], 
    :Address => params[:address], 
    :City => params[:city], 
    :State => params[:state], 
    :Zip => params[:zip], 
    :County => params[:county], 
    :DOB => params[:DOB], 
    :AgeMin => 0, 
    :AgeMax => 120, 
    :Limit => 1, 
    :ExactMatch => "yes" 
} 
} 
    @opt = JSON.generate(@options) 
@url = 'https://api.imsasllc.com/v3/' 
@response = HTTParty.post(@url, body: @opt, :headers => {'Content-Type' => 'application/json' }) 
@parsed = JSON.parse(@response.body) 
#byebug 
p @parsed 

以上、私はすべてを送信しようとしています。

以下は私が使用している形式です。

<%= form_for(@record_check) do |f| %> 
    <% if @record_check.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@record_check.errors.count, "error") %> prohibited this record_check from being saved:</h2> 

     <ul> 
     <% @record_check.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
    <% end %> 
     </ul> 
    </div> 
    <% end %> 


    <%= f.text_field :firstName, :placeholder => "First Name" %> 
    <%= f.text_field :lastName, :placeholder => "Last Name" %> 
    <%= f.text_field :middleName, :placeholder => "Middle Name (optional)" %> 
    <%= f.text_field :address, :placeholder => "Address (optional)" %> 
    <%= f.text_field :city, :placeholder => "City (optional)" %> 
    <%= f.text_field :state, :placeholder => "State (optional)" %> 
    <%= f.text_field :zip, :placeholder => "Zip Code (optional)" %> 
    <%= f.text_field :county, :placeholder => "County (optional)" %> 
    <%= f.date_select :DOB, {order: [:month, :day, :year], prompt: { day: 'Select day', month: 'Select month', year: 'Select year' }, start_year: Date.today.year - 18, end_year: Date.today.year - 100}, {required: true} %> 
    <div class="actions"> 
    <%= f.submit "Get Background Check", class: "btn-submit" %> 
    </div> 
<% end %> 

フォームを送信すると、APIは何も投稿されなかったというエラーを返します。私は困惑している。私は数日間この作業をしています...私のコントローラのメソッドに入力フォームを提出するのはどうですか?あなたのparams内の主な目的が欠落しているよう

+0

フォーム全体を提供できますか?上はフォームの始まり、内側のフィールドだけを示していません。 –

+0

ありがとう、編集を確認してください –

+0

あなたが得る正確なエラーを投稿してください。私は問題を知っていると思う。 –

答えて

0

はルックス:[:record_check] [:属性]代わりののparams [:属性]

あなた@options変数がのparamsを使用する必要があります。

そうのparams [:firstNameの] =>のparams [:record_check] [:firstNameの】ここで

は私のコントローラrecord_checks_controller.rbです:

class RecordChecksController < ApplicationController 

    def new 
    @record_check = RecordCheck.new 
    end 

    def create 
    @options = { 
    :credentials => { 
    :account_id => "XXXXXX", 
    :api_key => "MCYTAzCBbulF6X2M2H9tP5lOlsWXX" 
    }, 
    :product => "criminal_database", 
     :data => { 
     :FirstName => params[:record_check][:first_name], 
     :LastName => params[:record_check][:last_name], 
     :MiddleName => params[:record_check][:middle_name], 
     :Address => params[:record_check][:address], 
     :City => params[:record_check][:city], 
     :State => params[:record_check][:state], 
     :Zip => params[:record_check][:zip], 
     :County => params[:record_check][:county], 
     :DOB => params[:record_check][:dob], 
     :AgeMin => 0, 
     :AgeMax => 120, 
     :Limit => 1, 
     :ExactMatch => "yes" 
     } 
    } 
    @opt = JSON.generate(@options) 
    @url = 'https://api.imsasllc.com/v3/' 
    @response = HTTParty.post(@url, body: @opt, :headers => {'Content-Type' => 'application/json' }) 
    @parsed = JSON.parse(@response.body) 
    #byebug 
    p @parsed 
    end 
end 

マイモデルrecord_check.rb

class RecordCheck < ActiveRecord::Base 
end 

と私のフォームnew.html.erb:

<%= form_for(@record_check) do |f| %> 
    <%= f.text_field :first_name, :placeholder => "First Name" %> 
    <%= f.text_field :last_name, :placeholder => "Last Name" %> 
    <%= f.text_field :middle_name, :placeholder => "Middle Name (optional)" %> 
    <%= f.text_field :address, :placeholder => "Address (optional)" %> 
    <%= f.text_field :city, :placeholder => "City (optional)" %> 
    <%= f.text_field :state, :placeholder => "State (optional)" %> 
    <%= f.text_field :zip, :placeholder => "Zip Code (optional)" %> 
    <%= f.text_field :county, :placeholder => "County (optional)" %> 
    <%= f.date_select :dob, {order: [:month, :day, :year], prompt: { day: 'Select day', month: 'Select month', year: 'Select year' }, start_year: Date.today.year - 18, end_year: Date.today.year - 100}, {required: true} %> 
    <div class="actions"> 
    <%= f.submit "Get Background Check", class: "btn-submit" %> 
    </div> 
<% end %> 
RecordCheckため

<%= @parsed %> 

マイスキーマ:

マイcreate.html.erbビュー

create_table "record_checks", force: :cascade do |t| 
    t.string "first_name" 
    t.string "last_name" 
    t.string "middle_name" 
    t.string "address" 
    t.string "city" 
    t.string "state" 
    t.string "zip" 
    t.string "county" 
    t.date  "dob" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

結果の表示:

{"Results"=>{"Time"=>0.20036697387695, "Message"=>"NO RECORDS FOUND", "TotalRecords"=>0, "Inputs"=>{"Account"=>"128006", "FirstName"=>"John", "LastName"=>"Doe", "AgeMin"=>1, "AgeMax"=>120, "ExactMatch"=>"yes", "Limit"=>1}, "Product"=>"criminal_database", "Records"=>[]}} 

かなり良いAPIです。私には犯罪記録はありません。神に感謝します。

+0

私はあなたがやったこと全てに従いました。新しいレールアプリを作成して、それが他のものと違うものでないことを確認しました。私はこのエラーを両方のアプリケーションで受け取りました。 '' '未定義メソッド' firstName 'for# '' ' –

+0

私はフォームを間違えていました。あなたのコントローラがあなたのメソッド 'firstName'を認識しないので、あなたの問題であると思われる私の正確なデータベースフィールドを見ることができるように、私はスキーマを追加しました。私はそれが問題だと思う。フォームのメソッドがコントローラに一致することを確認します。 @record_setオブジェクトをインスタンス化するだけで、RecordSetのデータベースに何も保存していないことに気付くでしょう。 –

+0

すごくお世話になりました。現在、ジュニアデベロッパーはソロを担当しています。 –

関連する問題