对于这样一个简单的例子,你可以做简单的东西:
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