2016-07-27 2 views
0

Я знаю, как сделать вызовы API угловыми, используя службу $ http, но все примеры онлайн вызывают веб-API. Моя проблема в том, что мой коллега построил API с использованием ruby, и я не знаю, как назвать его, так как он находится в моей локальной среде. Вот код Ruby:Как сделать вызов API локальному рубиновому файлу

class Api::SignageAgentController < ApiController 

    def index 
     render json: Ingestor.signage_agents.to_json 
    end 

    def update 
     return render(status: :unprocessable_entity,json: ['No signage agent given']) unless @ingestor == Ingestor.signage_agents.find_by_id(params[:id]) 

     if @ingestor.update_attributes(valid_params) 
     render json: @ingestor.to_json 
     else 
     render(status: :unprocessable_entity,json: @ingestor.errors.to_a) 
     end 
    end 

    protected 

    def valid_params 
     params.require(:signage_agent).permit(:policy_file_keys) rescue {} 
    end 
end 

Как бы мне позвонить, указав индекс в angularjs?

+1

Угловые пробеги на клиенте (веб-браузер); Ruby работает на сервере (на другом компьютере, в другом месте). Вам нужно Угловое сделать запрос XHR на сервер, а код Ruby на сервере может затем вызвать другой код Ruby на сервере. В этом случае вы можете создать экземпляр нового 'Api :: SignageAgentController' либо во время запроса, либо при запуске приложения, либо называть методы вызова. – Phrogz

+0

Можете ли вы показать нам, что вы 'config/routes.rb', но только те, что относятся к' signage_agent'? – fbelanger

+0

@fbelanger Кажется, что ссылка на агента вывески отсутствует, другой, вызванный в файле маршрутов api, «делает» с каким-то другим кодом под ними.Вот он: 'resources: signage_agent, only: [: index,: update]' – ADHDTurtle

ответ

0

Это будет зависеть от пути URL, определенного для этого Api::SignageAgentController.

Если вы имеете доступ к проекту, перейдите на страницу config/routes.rb и найдите что-то вроде signage_agent.

Предполагая, что ваши маршруты что-то вроде этого:

Rails.application.routes.draw do 
    namespace :api, { .. } do 
    # get '/signage_agent', to: 'signage_agent#index' 
    resources :signage_agent, only [:index, ...] 
    end 
end 

Тогда в Угловом:

$http({ 
    method: 'GET', 
    url: '/api/signage_agent' 
}).then(function successCallback(response) { 

    }, function errorCallback(response) { 

}); 

В зависимости от {...} части, ваш URL путь может отличаться.

Если вы не видите subdomain или path, тогда все в порядке.

Если они присутствуют, вам может понадобиться прокси-сервер Rack, например pow или prax, если вы находитесь в Linux.

Проверьте свои конечные точки (URL пути), используя ваш браузер или еще лучше использовать RESTful тестирование API плагинов для вашего браузера или свободно доступных решений (Google: отдых тест апи онлайн)

Попробуйте прочитать на Rails маршрутизации, так как это поможет вам использовать AJAX на Front-end. Изучение маршрутизации Rails также поможет вам понять, как использовать API вашей компании.

http://guides.rubyonrails.org/routing.html

http://api.rubyonrails.org/classes/ActionDispatch/Routing.html

Вы найдете, что комбинации в config/routes.rb все, что вам действительно нужно понять.

Restful APIs используют HTTP-глаголы (get, post, put/patch, delete) для сопоставления контроллеров, в частности их действий (которые обрабатывают веб-запрос), для URL-путей.

Вы index действия, вероятно, будет установка на GET запрос с только именем контроллера, не /1, который представляет собой идентификатор (таким образом params[:id]).

Смежные вопросы