Ruby on Rails客户端应用程序和api应用程序

时间:2016-02-29 17:13:34

标签: ruby-on-rails ruby api

我有一个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视图中获取数据?

2 个答案:

答案 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