【问题标题】:Ruby on Rails client app and api appRuby on Rails 客户端应用和 api 应用
【发布时间】:2016-02-29 17:13:33
【问题描述】:

我有一个 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

此方法呈现一个 rabl 视图。

在我的路线文件中,我有这个 获取 'active_academic_titles' => 'academic_titles#active_academic_titles'

现在在客户端 Web 应用程序上,我想显示带有 html 和 erb 的 json 格式文本(rabl)。 在客户端网络应用程序上我有我的模型

class Api < ActiveResource::Base
  MODE = 'dev' # api or dev

  self.site = 'http://localhost:3003/'
  self.format = :json
end

此模型与 API 建立连接,客户端应用程序中的每个模型都继承自此 Api 模型。

我的问题是,我需要什么或添加到我的客户端应用程序,以便我可以从 api 视图获取数据?

【问题讨论】:

    标签: ruby-on-rails ruby api


    【解决方案1】:

    我不是你的目标,但据我了解,除非另有说明,否则控制器将呈现视图。因此,如果您希望它充当 API,只需从服务器以 JSON 形式返回,例如添加 render :json =&gt; somedata

    【讨论】:

      【解决方案2】:

      您可以在 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 'active_academic_titles' => 'academic_titles#active_academic_titles' 访问 json

      你需要写

      Api.get('active_academic_titles')
      

      注意:确保服务器端口为 3003,如果在端点 http://localhost:3003/active_academic_titles.json 处服务器发送 json

      额外信息: 这不是使用 ActiveResource 的最有效方式。一般来说,我们应该使用继承自 ActiveResource 的类的类名,即在您的情况下为“Api”,与端点相同,即 AcademicTitle,并且还应避免使用self.element_name = "",而是创建一个端点为http://localhost:3003/academic_titles/active_academic_titles.json

      参考链接:

      http://api.rubyonrails.org/v3.2.6/classes/ActiveResource/Base.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多