Как создать HTTP-запрос с использованием полей формы для API внешних веб-сайтов с использованием Ruby on Rails? - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь создать HTTP-запрос для отправки сообщений, используя поля формы для внешнего сайта, здесь это factual.com

Я создал метод в моем data_controller.rb, который похож на

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

У меня есть форма, подобная

<%= 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 %>    

Я хочу вызвать метод "posttofactual" в этой строке <% = f.submit%> в поле формы.

1 Ответ

0 голосов
/ 01 февраля 2012

Похоже, что ваша форма будет отправлять либо create, либо update метод контроллера.Там вы должны извлечь данные из params и вызвать метод posttofactual.

...