2013-03-04 6 views
5
json = JSON.parse(response.body) 
    @games = json['machine-games'] 

    paging = json['paging'] 
    if paging 
     if paging['next'] 
     next_page_query = paging['next'].match(/\?.*/)[0] 
     @next_page = "/machine_games/search#{next_page_query}" 
    end 

    if paging['previous'] 
     previous_page_query = paging['previous'].match(/\?.*/)[0] 
     @previous_page = "/machine_games/search#{previous_page_query}" 
    end 
    end 

ऊपर controller.How में शो विधि से तर्क का एक छोटा सा टुकड़ा मैं प्रस्तोता पर ले जाते हैं, जिससे कि यह machine_games JSON उत्तर पकड़ और खेल का उपयोग करने के तरीकों प्रदान करेगा और है अगले/पिछले पृष्ठ लिंक (और चाहे वे मौजूद हों या नहीं)।का उपयोग करना प्रस्तुतकर्ता

उत्तर

14

के @games, @next_page और @previous_page में एक JSON प्रतिक्रिया पार्स करने के लिए एक प्रस्तोता बनाएँ {कि प्रस्तोता पद्धति का उपयोग कर से परिचित नहीं}।

# app/presenters/games_presenter.rb 

class GamesPresenter 

    attr_reader :games, :next_page, :previous_page 

    def initialize json 
    @games = json['machine-games'] 

    paging = json['paging'] 
    if paging && paging['next'] 
     next_page_query = paging['next'].match(/\?.*/)[0] 
     @next_page = "/machine_games/search#{next_page_query}" 
    end 

    if paging && paging['previous'] 
     previous_page_query = paging['previous'].match(/\?.*/)[0] 
     @previous_page = "/machine_games/search#{previous_page_query}" 
    end 
    end 

end 

अब आप अपने नियंत्रक कार्रवाई कुछ इस तरह दिखना चाहिए:

def show 
    # ... 
    @presenter = GamesPresenter.new(json) 
end 

और आप अपने विचारों में इसका इस्तेमाल कर सकते हैं:

<% @presenter.games.each do |game| %> 
    ... 
<% end %> 

<%= link_to "Previous", @presenter.previous_page %> 
<%= link_to "Next", @presenter.next_page %> 

और आदेश ऐप्स के लोड होने रेल बताने के लिए/मॉडलों/नियंत्रकों/विचारों/आदि के साथ प्रस्तुतकर्ता/निर्देशिका इसे कॉन्फ़िगर/application.rb में जोड़ें:

config.after_initialize do |app| 
    app.config.paths.add 'app/presenters', :eager_load => true 
end 
+1

यह वास्तव में सहायक था। धन्यवाद: डी – kauschan

संबंधित मुद्दे