モデルに、API をパーサーしてデータを返すメソッドがあります。
def self.get_item_info(date, time, limit)
url = URI.parse("#{end_point_url}/#{date}?mRange=#{time}&limit=#{limit}")
@response = JSON.parse(Net::HTTP.get_response(url).body)
if @response["ERROR"]
flash[:notice] = { :notice => "Sorry, No Data returned. Message: #{@response["ERROR"]["errorMessage"]}" }
else
@data = []
@items = @response["v1"]["items"]
@items.each do |item|
add_data(item["itemNbr"])
@data << [@fam_id = item["FamId"],
@item_nbr = item["itemNbr"],
@item_desc = item["itemDesc"]]
end
return @data
end
end
私のコントローラー:
def index
if
date = params[:date]
time = params[:time]
limit = params[:limit].to_i
Product.get_item_info(date, time, limit)
if @message
redirect_to "/view_api", :flash => { :notice => "Sorry, No Data returned. Message: #{@message}" }
else
@data
end
end
end
API からエラーが返された場合、コントローラーで :back をリダイレクトし、API から返されたエラー メッセージをフラッシュするにはどうすればよいですか。最初はコントローラーにこのロジックがありましたが、テスト目的でモデルに移動しました。