1

利用可能な電話番号を一覧表示するために、Plivo に API 呼び出しを行っています。

返された応答にアクセスして、目的の要素を端末に出力できますが、Web ページでそれらを HTML としてレンダリングする方法がわかりません。これは私の問題です。

端末では、呼び出しが成功した場合の応答は次のようになります。

  {"api_id"=>"23f1f0f0-0808-11e3-a442-22000ac6194a",
 "meta"=>
  {"limit"=>1, "next"=>nil, "offset"=>0, "previous"=>nil, "total_count"=>1},
 "objects"=>
  [{"group_id"=>"23928520636825",
    "number_type"=>"local",
    "prefix"=>"646",
    "region"=>"New York, UNITED STATES",
    "rental_rate"=>"0.80000",
    "resource_uri"=>
     "/v1/Account/MAZDQ1ZJIYMDZKMMZKYM/AvailableNumberGroup/23928520636825/",
    "setup_rate"=>"0.00000",
    "sms_enabled"=>true,
    "sms_rate"=>"0.00800",
    "stock"=>50,
    "voice_enabled"=>true,
    "voice_rate"=>"0.00900"}]}
"0.00900"
New York, UNITED STATES
646

応答を生成する Ajax スクリプトは次のとおりです。

$(".localsearch").click(function() {
    var country_iso = $("#local").val();
    var region = $("#region").val();
    var prefix = $("#prefix").val();
    $.ajax({
    type: "GET",
    url: "/local/data",
    data: { 'country_iso' : country_iso,  'region' : region,  'prefix' : prefix },
    success: function(data) { 
    alert(data)
            },
     });
 });

アラートは役に立たず、ページ全体を表示するだけです。

ルビーコードは次のとおりです。

get '/local/data' do
      country_iso =  params[:country_iso]
      region = params[:region]
      prefix = params[:prefix]
      p = RestAPI.new(AUTH_ID, AUTH_TOKEN)
      params = {'country_iso' => country_iso, 'region' => region, 'prefix' => prefix, 'limit' => '1'}
      response = p.get_number_group(params)
      obj = response.last
      pp response.last 
      @region = obj["objects"][0]["region"]
      puts @region
      @prefix = obj["objects"][0]["prefix"]
      puts @prefix
     erb :search
end

長くて申し訳ありませんが、要約すると、API 応答から要素を抽出して HTML として出力するにはどうすればよいですか? よろしくお願いします。

私が試したビューで:

<%= @region %>そして<%= obj['region'] %><%= obj['objects][0]['region'] %>そして、それらのどれも機能しません。

4

1 に答える 1

0

あなたのは、ajax 呼び出しを介してパーシャルをレンダリングする完璧な使用例です。だからあなたができることは次のとおりです。

  1. このhttp://steve.dynedge.co.uk/2010/04/14/render-rails-style-partials-in-sinatra/のようなレンダリング部分機能のようなレールを使用して、Sinatraアクションがhtmlを返すようにします (部分的なレールを取得するにはsinatra の機能については、この gem も使用できます https://rubygems.org/gems/sinatra-partial )

  2. sinatra アクションが有効な html を返すようになったので、ajax 成功関数で次のように記述できます。

    $(".localsearch").click(function() {
    var country_iso = $("#local").val();
    var region = $("#region").val();
    var prefix = $("#prefix").val();
    $.ajax({
       type: "GET",
       url: "/local/data",
       data: { 'country_iso' : country_iso,  'region' : region,  'prefix' : prefix },
       success: function(data) { 
          $('unique_identifier_of_your_partial_on_the_html_dom').html(response)
       }
    });
    

    });

sinatra で部分的にレンダリングする別の例: Ruby w/ Sinatra: jQuery AJAX リクエストの例を教えてください。

この ajax 呼び出しからの応答を入力する html を別の erb ファイルに抽出します。_my_response_partial.html.erb とします。これが search.html.erb ファイルであるとします。

#something somrthing
<%= erb(:my_response_partial, locals => {:region => @region, :prefix => @prefix},:layout => false) %> #pass whatever data you want to pass to a partial using locales
# something something

get アクションで、最後の行を次のように置き換えます。

erb(:my_response_partial, locals => {:region => @region, :prefix => @prefix},:layout => false)

このようにして、あなたのアクションは、そのパーシャルを設定するために必要な html を返すだけです。

于 2013-08-18T14:44:30.283 に答える