我有一个Ruby on Rails应用程序,可以作为其他Web应用程序的API。这个API有一个名为AcademicTitlesController的控制器,在这个控制器中我有一个方法active_academic_titles。
class AcademicTitlesController < ApplicationController
def index
....
end
def active_academic_titles
@active_academic_titles = AcademicTitle.where(:academic_unit_id => params[:academic_unit_id]).order('name')
end
end
这种方法提供了一个拉布尔视图。
在我的路线文件中,我有这个 get'active_academic_titles'=&gt; 'academic_titles#active_academic_titles'
现在在客户端Web应用程序上,我想用html和erb显示json格式文本(rabl)。 在客户端Web应用程序上,我有我的模型
class Api < ActiveResource::Base
MODE = 'dev' # api or dev
self.site = 'http://localhost:3003/'
self.format = :json
end
此模型建立与API的连接,客户端应用程序中的每个模型都继承自此Api模型。
我的问题是,我需要或添加到我的客户端应用程序,以便我可以从api视图中获取数据?
答案 0 :(得分:0)
我不是你的目标,但据我了解,除非另有说明,否则控制器将呈现视图。因此,如果您希望它充当API,只需从服务器返回JSON格式,例如添加render :json => somedata
答案 1 :(得分:0)
您可以将Api类更改为
class Api < ActiveResource::Base
MODE = 'dev' # api or dev
self.site = 'http://localhost:3003/'
self.element_name = "" # You can also use self.collection_name = "" instead
self.format = :json
end
从get&#39; active_academic_titles&#39;访问json =&GT; &#39;#academic_titles active_academic_titles&#39;
你需要写
Api.get('active_academic_titles')
注意:确保服务器端口为3003,服务器在端点http://localhost:3003/active_academic_titles.json发送json
额外信息:
这不是使用ActiveResource最有效的方法。通常我们应该使用继承自ActiveResource的类的类名,即Api&#39;在您的情况下,与端点相同,即AcademicTitle,也应该避免使用self.element_name = ""
而是创建一个端点http://localhost:3003/academic_titles/active_academic_titles.json
参考链接:
http://api.rubyonrails.org/v3.2.6/classes/ActiveResource/Base.html