weixin_33671935 2015-12-29 12:19 采纳率: 0%
浏览 26

Rails控制器到ajax

I have a right good query here. Believe this is what i need to do.

I've got this line of code.

event = client.get_listings_by_event 1296393

Now, This code is in a private def method. Lets call it data.

In my show method i have it listed as data.

I'm wanting to have the response from this (that i'm currently able to use in byebug) and use it in my javascript file i have running and already sorting other apis.

This is the byebug response i get

#<GogoKit::Listing:0x007faa0b888058 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"links"=>#<Representable::Definition ==>links @options={:as=>"_links", :instance=>#<Proc:0x007faa0284d150@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/roar-1.0.4/lib/roar/json/hal.rb:191 (lambda)>, :exec_context=>:decorator, :getter=>#<Proc:0x007faa0284c890@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/roar-1.0.4/lib/roar/hypermedia.rb:139 (lambda)>, :parse_filter=>[], :render_filter=>[], :extend=>Roar::JSON::HAL::Links::LinkCollectionRepresenter}>, "id"=>#<Representable::Definition ==>id @options={:parse_filter=>[], :render_filter=>[], :as=>"id"}>, "number_of_tickets"=>#<Representable::Definition ==>number_of_tickets @options={:parse_filter=>[], :render_filter=>[], :as=>"number_of_tickets"}>, "seating"=>#<Representable::Definition ==>seating @options={:class=>GogoKit::Seating, :skip_parse=>#<Proc:0x007faa070eeda0@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:37 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"seating", :extend=>GogoKit::SeatingRepresenter}>, "pickup_available"=>#<Representable::Definition ==>pickup_available @options={:parse_filter=>[], :render_filter=>[], :as=>"pickup_available"}>, "download_available"=>#<Representable::Definition ==>download_available @options={:parse_filter=>[], :render_filter=>[], :as=>"download_available"}>, "ticket_price"=>#<Representable::Definition ==>ticket_price @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070ed798@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:43 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"ticket_price", :extend=>GogoKit::MoneyRepresenter}>, "estimated_ticket_price"=>#<Representable::Definition ==>estimated_ticket_price @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070eceb0@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:47 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"estimated_ticket_price", :extend=>GogoKit::MoneyRepresenter}>, "estimated_total_ticket_price"=>#<Representable::Definition ==>estimated_total_ticket_price @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070ec5c8@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:51 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"estimated_total_ticket_price", :extend=>GogoKit::MoneyRepresenter}>, "estimated_booking_fee"=>#<Representable::Definition ==>estimated_booking_fee @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070e7d48@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:55 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"estimated_booking_fee", :extend=>GogoKit::MoneyRepresenter}>, "estimated_shipping"=>#<Representable::Definition ==>estimated_shipping @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070e74b0@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:59 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"estimated_shipping", :extend=>GogoKit::MoneyRepresenter}>, "estimated_vat"=>#<Representable::Definition ==>estimated_vat @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070e6a10@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:63 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"estimated_vat", :extend=>GogoKit::MoneyRepresenter}>, "estimated_total_charge"=>#<Representable::Definition ==>estimated_total_charge @options={:class=>GogoKit::Money, :skip_parse=>#<Proc:0x007faa070e5f48@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:67 (lambda)>, :parse_filter=>[], :render_filter=>[], :as=>"estimated_total_charge", :extend=>GogoKit::MoneyRepresenter}>, "ticket_type"=>#<Representable::Definition ==>ticket_type @options={:class=>GogoKit::TicketType, :skip_parse=>#<Proc:0x007faa070e5638@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:71 (lambda)>, :embedded=>true, :parse_filter=>[], :render_filter=>[], :as=>"ticket_type", :extend=>GogoKit::TicketTypeRepresenter}>, "listing_notes"=>#<Representable::Definition ==>listing_notes @options={:class=>GogoKit::ListingNote, :skip_parse=>#<Proc:0x007faa070e4c60@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource/listing.rb:76 (lambda)>, :embedded=>true, :collection=>true, :parse_filter=>[], :render_filter=>[], :as=>"listing_notes", :extend=>GogoKit::ListingNoteRepresenter}>}, :options=>{}, :wrap=>nil, :links=>[[{:rel=>:self}, #<Proc:0x007faa0284da38@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource.rb:16>]]}, @links={"self"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b881140 @attrs={"href"=>"https://api.viagogo.net/v2/listings/28107921", "title"=>nil, "templated"=>false, "rel"=>"self"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>, "listing:deliverymethods"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b87be70 @attrs={"href"=>"https://api.viagogo.net/v2/listings/28107921/deliverymethods", "title"=>nil, "templated"=>false, "rel"=>"listing:deliverymethods"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>, "listing:event"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b87aae8 @attrs={"href"=>"https://api.viagogo.net/v2/events/1382274", "title"=>nil, "templated"=>false, "rel"=>"listing:event"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>, "listing:localwebpage"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b879918 @attrs={"href"=>"https://www.viagogo.com/secure/buy/selectquantity?listingId=28107921&eventId=1382274&quantity=1", "title"=>"Buy", "templated"=>false, "rel"=>"listing:localwebpage"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>, "listing:purchasepreview"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b878400 @attrs={"href"=>"https://api.viagogo.net/v2/listings/28107921/purchasepreview", "title"=>"Buy", "templated"=>false, "rel"=>"listing:purchasepreview"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>, "listing:webpage"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b872de8 @attrs={"href"=>"https://www.viagogo.com/ww/secure/buy/selectquantity?listingId=28107921&eventId=1382274&quantity=1", "title"=>"Buy", "templated"=>false, "rel"=>"listing:webpage"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>},
 @id=28107921, @number_of_tickets=1, @seating=#<GogoKit::Seating section="BNCH T", row="31", seat_from=nil, seat_to=nil>, @pickup_available=false, @download_available=false, @ticket_price=#<GogoKit::Money:0x007faa0b868348 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>},
  :options=>{}, :wrap=>nil}, @amount=49.73, @currency_code="USD", @display="$49.73">, @estimated_ticket_price=#<GogoKit::Money:0x007faa0b8621c8 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>}, :options=>{}, :wrap=>nil}, @amount=49.73, @currency_code="USD", @display="$49.73">, @estimated_total_ticket_price=#<GogoKit::Money:0x007faa0b8600a8 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>}, :options=>{}, :wrap=>nil}, @amount=49.73, @currency_code="USD", @display="$49.73">, @estimated_booking_fee=#<GogoKit::Money:0x007faa035f98f8 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>}, :options=>{}, :wrap=>nil}, @amount=7.46, @currency_code="USD", @display="$7.46">, @estimated_shipping=#<GogoKit::Money:0x007faa035f3430 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>}, :options=>{}, :wrap=>nil}, @amount=0.0, @currency_code="USD", @display="$0.00">, @estimated_vat=#<GogoKit::Money:0x007faa035f0c58 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>}, :options=>{}, :wrap=>nil}, @amount=1.49, @currency_code="USD", @display="$1.49">, @estimated_total_charge=#<GogoKit::Money:0x007faa035e9f20 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"amount"=>#<Representable::Definition ==>amount @options={:parse_filter=>[], :render_filter=>[], :as=>"amount"}>, "currency_code"=>#<Representable::Definition ==>currency_code @options={:parse_filter=>[], :render_filter=>[], :as=>"currency_code"}>, "display"=>#<Representable::Definition ==>display @options={:parse_filter=>[], :render_filter=>[], :as=>"display"}>}, :options=>{}, :wrap=>nil}, @amount=58.68, @currency_code="USD", @display="$58.68">, @ticket_type=#<GogoKit::TicketType:0x007faa0b85be40 @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"links"=>#<Representable::Definition ==>links @options={:as=>"_links", :instance=>#<Proc:0x007faa0284d150@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/roar-1.0.4/lib/roar/json/hal.rb:191 (lambda)>, :exec_context=>:decorator, :getter=>#<Proc:0x007faa0284c890@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/roar-1.0.4/lib/roar/hypermedia.rb:139 (lambda)>, :parse_filter=>[], :render_filter=>[], :extend=>Roar::JSON::HAL::Links::LinkCollectionRepresenter}>, "type"=>#<Representable::Definition ==>type @options={:parse_filter=>[], :render_filter=>[], :as=>"type"}>, "name"=>#<Representable::Definition ==>name @options={:parse_filter=>[], :render_filter=>[], :as=>"name"}>}, :options=>{}, :wrap=>nil, :links=>[[{:rel=>:self}, #<Proc:0x007faa0284da38@/Users/samroberts/Desktop/admitme/vendor/bundle/ruby/2.2.0/gems/gogokit-0.4.1/lib/gogokit/resource.rb:16>]]}, @links={"self"=>#<Roar::Hypermedia::Hyperlink:0x007faa0b859f28 @attrs={"href"=>"https://api.viagogo.net/v2/tickettypes/ETicketThirdPartyPreUpload", "title"=>nil, "templated"=>false, "rel"=>"self"}, @representable_attrs={:features=>{Representable::JSON=>true}, :definitions=>{"_self"=>#<Representable::Definition ==>_self @options={:hash=>true, :parse_filter=>[], :render_filter=>[], :as=>"_self"}>}, :options=>{}, :wrap=>nil}>}, @type="ETicketThirdPartyPreUpload", @name="E-Ticket">, @listing_notes=[]>

Obviously this only the first item, How would i go about passing this through to the javascript ajax?

Would the ajax request even be able to handle this format?

This is my current ajax request

$.ajax({
    type: 'GET',
    crossDomain: true,
    dataType: 'json',
    url: 'https://',
    success: function(json) {

Would i just put in the url area data.event?

Here is all my code:

def gogodata
    # All methods require OAuth2 authentication. To get OAuth2 credentials for your
    # application, see http://developer.viagogo.net/#authentication.
    client = GogoKit::Client.new do |config|
      config.client_id = ENV['viagogo_key']
      config.client_secret = ENV['viagogo_secret']
    end



    # Get an access token. See http://developer.viagogo.net/#getting-access-tokens
    token = client.get_client_access_token
    client.access_token = token.access_token


    # Get a list of events, categories, venues and metro areas that match the given
    # search query

    event = client.get_listings_by_event @event.viagogolink
    byebug
    # Get the different event genres (see http://developer.viagogo.net/#entities)
    genres = client.get_genres



  end

Edit

i get this error, ActionController::UnknownFormat

on this respond_with event If it helps heres the code

  respond_to :json, only: :data

   def data
     client = GogoKit::Client.new do |config|
       config.client_id = ENV['viagogo_key']
       config.client_secret = ENV['viagogo_secret']
     end
     token = client.get_client_access_token
     client.access_token = token.access_token
     event = client.get_listings_by_event(params[:id])
      respond_with event
   end

imageoferror

console

  • 写回答

1条回答 默认 最新

  • 撒拉嘿哟木头 2015-12-29 14:22
    关注

    If you wanted to use the data in the front-end (publicly), you'd need to first make the event data "public" (by your own admission, your current implementation is private), and then make sure your app can access it via the routes:

    #config/routes.rb
    resources :clients do
       scope constraints: { format: "json" } do
          get :data, on: :member
       end
    end
    
    #app/controllers/clients_controller.rb
    class ClientsController < ApplicationController
       respond_to :json, only: :data
    
       def data
          event = client.get_listings_by_event(params[:id])
          respond_with event
       end
    end
    

    This will allow you to send a request to the aforementioned route, manipulating the response as you require:

    #app/assets/javascripts/application.js
    $(document).ready(function(){
        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: 'clients/1296393/data',
            success: function(data) {
                alert(JSON.stringify(data));
            });
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Qt安装后运行不了,这是我电脑的问题吗
  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法