2

一段时间以来,我一直在使用 ruby​​ 进行 API 调用并在终端中严格操作。我现在正在学习更多关于 Rails 的知识并试图离开我的终端。如何使用 rails 4.0 将变量从已经存在的 .rb 文件放到屏幕上?我很困惑我应该在哪里编写 API 请求来获取变量——它是控制器吗,我可以直接在视图中编写它吗?等等。

示例想法:

#test.rb

call= "/api/v2/surveys/"
auth = {:username => "test", :password => "password"}
url = HTTParty.get("https://surveys.com#{call}",
:basic_auth => auth,
:headers => { 'ContentType' => 'application/json' } )
response = JSON.parse(url.body)
survey_ids = response["surveys"].map { |s| s["id"] }
survey_ids.each do |i|
  puts i
end

那是我已经拥有的示例 .rb 脚本。不同之处在于,我希望puts i在加载页面时发生在 Web 应用程序上,而不是在终端中运行脚本。我会在rails中使用什么来实现这一点?

4

1 回答 1

3

这完全取决于您的应用程序将如何设置,但这是一个基本示例:

假设您有一个调查模型:

class Survey < ActiveRecord::Base
  attr_accessible :survey_id
end

您可以在 SurveysController 中调用调查列表(我假设这就是您的代码所做的):

class SurveysController < ApplicationController

def index
  @surveys = Survey.all
end

def show
  @survey = Survey.find(params[:id])
 end

def pull_surveys
  call= "/api/v2/surveys/"
  auth = {:username => "test", :password => "password"}
  url = HTTParty.get("https://surveys.com#{call}",
        :basic_auth => auth,
        :headers => { 'ContentType' => 'application/json' } )
  response = JSON.parse(url.body)
  survey_ids = response["surveys"].map { |s| s["id"] }
  survey_ids.each do |i|
    Survey.create(survey_id: i)
  end
end

调用 pull_surveys 方法后,您实际上将拥有可以加载视图的调查,因此在调查模型的视图中,您可以使用 @surveys 或 @survey(取决于您所在的视图)并提供您想要的任何内容(例如@survey.survey_id in show 以显示该特定调查的 ID)。

请注意,您需要注意放置 API 调用方法的位置 - 为了简单起见,我将其放置在控制器中,但您可能不想这样做。

Rails 指南中有很多有用的信息可以帮助您入门: http: //guides.rubyonrails.org/index.html

于 2013-08-09T17:25:06.537 回答