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 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝