2017-10-18 135 views
1

正如我在問題標題中提到的,我想知道最佳方法來實現這個工作,我需要示例(非常簡單的一個作爲如下:)如何將2個導軌5個應用程序連接在一起API(導軌)和前端(導軌以及)

比方說我有具有1個控制器和例如簡單

root 'main#index' 

和索引動作內1個動作的API我有

def index 
    @date = Data.today 
end 

然後我有另一個導軌呈現


如何傳遞這個@date作爲JSON從API到其他應用程序,以使其應用程序,它會爲前端工作?

我應該在其他應用程序上有相同的控制器嗎?

如何連接併發送http請求並接收響應?


在此先感謝

+0

我想你可能意指'@date = Date.today'(你的版本說數據)。 – drosboro

回答

2

對於這樣一個簡單的例子,你可以做簡單的東西:

def index 
    @date = Date.today 
    respond_to do |format| 
    format.json @date 
    end 
end 

但是,你最有可能會想處理更復雜的JSON響應,所以不久之後,您可能會想要使用類似Jbuilder gemActiveModel Serializers(我的首選方法)。

另一方面,您的前端需要發出HTTP GET請求。很多方法(和寶石)可以做到這一點,但一種常見的方法是使用內置的Net::HTTP類。

require 'net/http' 

url = URI.parse('http://backend.dev/main/index') 
request = Net::HTTP::Get.new(url.to_s) 
response = Net::HTTP.start(url.host, url.port) do |http| 
    http.request(request) 
end 

raise response.body.inspect 

在你的情況下,更好的方法可能是使用Active Resource gem。該gem允許您創建由REST API而不是數據庫支持的模型。例如,如果你的API的應用程序提供基本的創建,讀取,更新和銷燬行動在下列URL的特定型號(姑且稱之爲Widget):

GET http://backend.dev/widget  # listing of widgets 
GET http://backend.dev/widget/1  # Read for widget id: 1 
POST http://backend.dev/widget  # Create new widget 
UPDATE http://backend.dev/widget/1 # Update widget id: 1 
DELETE http://backend.dev/widget/1 # Destroy widget id: 1 

然後在前端應用程序,你可以聲明活動資​​源是這樣的:

class Widget < ActiveResource::Base 
    self.site = "http://backend.dev" 
end 

將自動神奇地訪問所有的API中的這些方法和行爲非常像一個普通的活動記錄模式。這樣,您基本上就像「普通」rails應用程序一樣設計前端應用程序,但使用基於ActiveResource的模型代替ActiveRecord。

但是我會注意到,現在做的更常見的事情是在Rails中構建您的API,並使用客戶端JavaScript構建前端,使用類似JQuery或Angular的請求API。我不確定你通過分裂API和前端獲得了什麼,他們都是Rails應用程序 - 除非你有一個令人信服的理由,我只需構建一個處理API和前端應用程序的Rails應用程序,結束,或者構建Rails API + Angular(或類似的)前端。

+0

嗯,原因是我想創建一個處理所有邏輯的API,並且我想要用Angular創建一個真正好的前端,事情是,我現在不能夠舒適地使用角度,所以我有分裂它,並使用軌道作爲前端,因爲它符合我目前的經驗與前端,這將是一些像測試前端不是一個真實的,我不希望我的應用程序是單片,所以我可以使它前端,稍後結束,另外一個問題是我應該在哪裏寫這段代碼?可能是我有一些鐵軌的經驗,但沒有在這一部分。 –

+0

好的,在這種情況下,我可能會建議使用ActiveResource gem,它基本上允許您創建由API而不是數據庫支持的模型(如正常)。這樣,您的前端應用程序就會像「普通」應用程序一樣構造。我已經在我的答案中添加了一部分內容 - 但您會仔細查看Active Resource自述文件。 – drosboro

+0

這就是我正在尋找的東西,或者至少它解決了一個嚴重的問題,我嘗試了它,它工作,我有一些掙扎,不得不閱讀文檔,它的工作索引條目和添加新的條目數據庫,我猜測它應該相同的更新和刪除,非常感謝您的幫助:) –