對於這樣一個簡單的例子,你可以做簡單的東西:
def index
@date = Date.today
respond_to do |format|
format.json @date
end
end
但是,你最有可能會想處理更復雜的JSON響應,所以不久之後,您可能會想要使用類似Jbuilder gem或ActiveModel 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(或類似的)前端。
我想你可能意指'@date = Date.today'(你的版本說數據)。 – drosboro