2012-02-01 5 views
-1

は、私がここに外部のウェブサイトにフォームフィールドを使用してHTTP POSTリクエストを作成しようとしていますそれはfactual.comRuby on Railsを使用してフォームフィールドを使用して外部ウェブサイトAPIにHTTPポストリクエストを作成する方法は?

私は

def posttofactual 

uri = URI.parse("http://api.factual.com/v2/tables/Nj0JN3/input?") 

# Full control 
http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri) 
request.set_form_data({"name" => "datum.name", "address" => "datum.address", "locality" => "datum.locality", "region" => "datum.region", "postcode" => "datum.postcode","category" => "datum.category","website" => "datum.website","latitude" => "datum.latitude","longitude" => "datum.longitude","&APIKey=" => "myapikey" }) 

# Tweak headers, removing this will default to application/x-www-form-urlencoded 
request["Content-Type"] = "application/json" 

response = http.request(request) 

end 

のようである私のdata_controller.rbでメソッドを作成しました私は、フォームフィールド上のこの行<% = f.submit%>の「posttofactual」メソッドを呼び出したい

<%= form_for(@datum) do |f| %> 
<% if @datum.errors.any? %> 
<div id="error_explanation"> 
<h2><%= pluralize(@datum.errors.count, "error") %> prohibited this datum from being saved:</h2> 
<ul> 
<% @datum.errors.full_messages.each do |msg| %> 
<li><%= msg %></li> 
<% end %> 
</ul> 
</div> 
<% end %> 
<div class="field"> 
<%= f.label :name %><br /> 
<%= f.text_field :name %> 
</div> 
<div class="field"> 
<%= f.label :address %><br /> 
<%= f.text_field :address %> 
</div> 
<div class="field"> 
<%= f.label :locality %><br /> 
<%= f.text_field :locality %> 
</div> 
<div class="field"> 
<%= f.label :region %><br /> 
<%= f.text_field :region %> 
</div> 
<div class="field"> 
<%= f.label :postcode %><br /> 
<%= f.number_field :postcode %> 
</div> 
<div class="field"> 
<%= f.label :category %><br /> 
<%= f.text_field :category %> 
</div> 
<div class="field"> 
<%= f.label :website %><br /> 
<%= f.text_field :website %> 
</div> 
<div class="field"> 
<%= f.label :latitude %><br /> 
<%= f.text_field :latitude %> 
</div> 
<div class="field"> 
<%= f.label :longitude %><br /> 
<%= f.text_field :longitude %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 
<% end %>  

のような形を持っています。

+0

Sergio Tulentsev、私は私の背景が何であるかを教えて答えが必要だと疑っていました...あなたがこの質問を助けることを考えたら、それは大丈夫か、それとも自分でそれを見つけるでしょう。ありがとう – user1166925

答えて

0

コントローラのcreateまたはupdateのいずれかのフォームに投稿されるようです。あなたはparamsからデータを抽出し、posttofactualメソッドに電話する必要があります。

関連する問題