0

Savon gem を使用してhttp://www.webservicex.net/CurrencyConvertor.asmx?WSDLからデータを取得することで、Ruby on Rails アプリケーションに通貨コンバーターを統合しようとしています。http://www.mindfiresolutions.com/How-to-use-Savon-in-Ruby-on-Rails-Application-2367.phpのチュートリアルに従っていましたが、送信ボタン。私はチュートリアルが言っていることを正確に守っています。これは私のコードです。

私は1つのコントローラーを持っています、


class ConverterController < ApplicationController
  def index
  end

  def show
  end

  def create
    # creating a object of the CurrencyConverter model
    currency = CurrencyConverter.new(params[:fromCurrency],params[:toCurrency])
    render :json => currency.result
  end
end

モデル:


class CurrencyConverter < ActiveRecord::Base
  require 'savon'
    attr_reader :result
  # purpose :  for initializing the object of currency converter
  # params : fromCurrecny(unit),toCurrency(unit)
  # return : none

  def initialize(fromCurrency , toCurrency)
    # creating a client from the wsdl schema 
    client = Savon::Client.new("http://webservicex.net/currencyconvertor.asmx?wsdl")
    # calling the api with fromCurrecny and toCurrency unit

    response = client.request :web, :conversion_rate, body: {
                       "FromCurrency" =>     fromCurrency , "ToCurrency" => toCurrency
                      }

    #checking for success of api call
    if response.success?
      data = response.to_array(:conversion_rate_response).first
      if data
        # setting convertion rate to result   
        @result = data[:conversion_rate_result]
      end
    end
  end
end

index.html.erb の私の見解


<h1>Public#index</h1>
<p>Find me in app/views/public/index.html.erb</p>

<div id="welcome">

    <label> From Currency Unit</label>
     <select name="from_currency" id="from_currency">
         <option value="">Select Currency</option>
        <option value="GBP">British Pound</option>
        <option value="INR">Indian Rupee</option>
        <option value="PKR">Pakistani Rupee</option>
        <option value="SGD">Singapore Dollar</option>
        <option value="ZAR">South African Rand</option>
        <option value="USD">U.S. Dollar</option>
    </select>
 <input type="text" id="from_amount" placeholder="Enter From Curreny Amount"/>
 <br>

 <label> To Currency Unit</label>
 <select name="to_currency" id="to_currency">
        <option value="">Select Currency</option>
        <option value="GBP">British Pound</option>
        <option value="INR">Indian Rupee</option>
        <option value="PKR">Pakistani Rupee</option>
        <option value="SGD">Singapore Dollar</option>
        <option value="ZAR">South African Rand</option>
        <option value="USD">U.S. Dollar</option>
  </select>
  <input type="text" readonly id="to_amount" placeholder="to Curreny Amount"/>
  <br>
  <input type="button" class="btn" id="get_conversion_rate" value="Get Conversion">

この fromCurrency And toCurrency ユニットを送信するために ajax 呼び出しを使用しています。/assets/javascripts/CurrencyConverter.js の下にコードを配置し、application.html.erb ファイルに <% javascript_include_tag :all %> 行を追加してそれらを含めます。そのコードは次のとおりです。


$(document).ready(function(){
        var rate = 0.0;
        var fromCurrency = $("#from_currency");
        var toCurrency= $("#to_currency");
        var fromAmount = $("#from_amount");
        var toAmount = $("#to_amount");
        var  button = $('#get_conversion_rate');

        var getConversionRate = function(){
            $.post('/publics',{
                fromCurrency : fromCurrency.val(),
                toCurrency : toCurrency.val()
              },function(data) {
                rate = data;
                toAmount.val(fromAmount.val()*rate);
           });
        };

        var initializer = function(){
            button.click(getConversionRate);
         };
        initializer();
});

助けてください。

4

1 に答える 1

2

どうぞ。可能な限り最小の例は、Savon v2.x で機能します。

require 'savon'

c=Savon.client(wsdl: "http://www.webservicex.net/CurrencyConvertor.asmx?WSDL")

r=c.call(:conversion_rate,
         message: {'FromCurrency' => 'EUR', 'ToCurrency' => 'CAD'})

print r.to_hash[:conversion_rate_response][:conversion_rate_result]
于 2013-09-24T18:42:51.670 に答える