2013-01-16 24 views
5

Bardzo podoba mi się RABL, ale wygląda na to, że zapełni moje foldery widoków plikami .rabl. Naprawdę chcę mieć idealnie oddzielny katalog API ciami więc byłoby tak:Katalog widoków API RABL?

app/ 
    views/ 
     customers/ 
      index.html.erb 
      show.html.erb 
      ...... 
     api/ 
      v1/ 
       customers/ 
        index.json.rabl 
        show.json.rabl 

Co jest najlepszym sposobem osiągnięcia tego celu? Używam tego samouczka:

http://railscasts.com/episodes/350-rest-api-versioning

Aby skonfigurować wersjonowanie ale nie obsługuje Rabl. Próbowałem to w app/controllers/api/v1/customers_controller.rb:

module Api 
    module V1 
     class CustomersController < ApplicationController 
      respond_to :json 

      def index 
       @customers = Customer.search(params[:page]) 

       Rabl::Renderer.json(@customers, 'api/v1/customers/index') 
      end 
     end 
    end 
end 

Ale zgodnie z oczekiwaniami, które nie wydają się działać.

Odpowiedz

5

Miał ten sam problem. I rozwiązać go, dodając w ten inicjatora Rabl

# config/initializers/rabl_init.rb 
require 'rabl' 
Rabl.configure do |config| 
    config.view_paths = [Rails.root.join('app', 'views')] 
end 

Jeśli chcesz porzucić tę linię Rabl::Renderer.json(@customers, 'api/v1/customers/index') tylko zmienić konfigurację być config.view_paths = [Rails.root.join('app', 'views', 'api', 'v1')]. W kontrolerze automatycznie go połączy.

Mam nadzieję, że to pomaga

+5

Jak to działa w przypadku kontroli wersji? – toobulkeh

0

Z tego, co widzę, powinno to zadziałać. Robię prawie to samo. Jakie błędy dostałeś?

+0

RABL nie działa. Nie jestem pewien, dlaczego – andy