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));
            });
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站