2

私はしばらくの間、Ruby を使用して API 呼び出しを行い、ターミナルで厳密に操作してきました。私は現在、レールについてさらに学び、端末から抜け出そうとしています。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 アプリで発生することです。それを実現するには、レールで何を使用しますか?

4

1 に答える 1

3

アプリケーションの設定方法に完全に依存しますが、基本的な例を次に示します。

Survey モデルがあるとします。

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 メソッドを呼び出した後、実際にビューが読み込むことができる調査があるので、Survey Model のビューで @surveys または @survey (現在のビューに応じて) を使用して、必要なものを提供できます (例: @survey.survey_id は、その特定の調査の ID を示すために表示されます)。

API 呼び出しメソッドを配置する場所に注意する必要があることに注意してください。簡単にするためにコントローラーに配置しましたが、これを行いたくない場合があります。

Railsガイドには、始めるのに役立つ情報がたくさんあります: http://guides.rubyonrails.org/index.html

于 2013-08-09T17:25:06.537 に答える