実現したいこと
ここに実現したいことを箇条書きで書いてください。
- REXML::ParseException
Missing end tag for 'hr' (got 'body')
のエラーを解消したい
前提
ホットペッパーAPIで店舗を検索し一覧表示する画面を作りたいです。
rails 6.0.0
発生している問題・エラーメッセージ
REXML::ParseException in Public::ShopsController#search Missing end tag for 'hr' (got 'body') Line: 6 Position: 156 Last 80 unconsumed characters: hash = Hash.from_xml response.body ←shops_controllerのこの行でエラーが起きているようです
該当のソースコード
shops_controller
1class Public::ShopsController < ApplicationController 2 3 def search 4 begin 5 keyword = params[:keyword] 6 7 require 'open-uri' 8 require 'json' 9 require 'active_support' 10 require 'active_support/core_ext' 11 12 uri = "http://webservice.recruit.co.jp/hotpepper/gourmet/v1/" 13 api_key = ENV['API_KEY'] 14 url = uri << "?key=" << api_key << "&hit_per_page=100" << "&keyword=" << URI.encode_www_form_component(keyword) 15 16 uri = URI.parse(url) 17 http = Net::HTTP.new(uri.host, uri.port) 18 request = Net::HTTP::Get.new(uri.request_uri) 19 response = http.request(request) 20 21 22 hash = Hash.from_xml response.body 23 @shops = [] 24 25 if hash.has_key?("results") 26 if hash["results"]["results_available"].to_i > 0 27 hash["results"]["shop"].each do |shop| 28 @shops.push({ 29 id: shop["id"], 30 name: shop["name"], 31 photo: shop["photo"]["pc"]["s"], 32 # url: shop["url"], 33 address: shop["address"], 34 large_area: shop["large_area"]["name"], 35 # station_name: shop["station_name"], 36 # open: shop["open"], 37 # close: shop["close"], 38 # tel: shop["tel"], 39 }) 40 end 41 end 42 else 43 @error = "エラーが発生しました" 44 end 45 end 46 end 47 48end 49
shops/search.html.erb
1<%= form_with url: shops_search_path, local: true, method: :get do |f| %> 2 <%= f.text_field :keyword %> 3 <%= f.submit '検索' %> 4<% end %> 5<%=form_with url: new_post_path, method: :get do |f| %> 6 <% @shops.each do |shop| %> 7 <%= f.radio_button :select_shop, shop[:id] %> 8 <%= f.label :select_shop do %> 9 <%= image_tag shop[:photo] %> 店名:<%= shop[:name] %> : 住所:<%= shop[:address] %> 10 <% end %><br> 11 <% end %> 12 <%= f.submit '決定', class:"btn btn-primary px-4" %> 13<% end %>
試したこと
APIキーの再取得

下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/06/05 12:17