現在、railsにてゴルフスコアアプリを制作しており、楽天APIからゴルフ場情報を取得するところまではできました。ただ現状、下記コードのようにコントローラに検索用のキーワードをコントローラに記述しております。
やりたいこととしては、
1.コントローラに記述している部分をフォームにしたい。
具体的にはtodoufukenという変数にフォームの値を入れたい。
調べてはみたのですが、form_forを使えばよいのかなとは思っているのですが、どのようにコントローラ側に値を渡したら良いかわかりません。
また、このようなケースは、JSをつかうべきでしょうか。
2.該当なしの場合、エラーを出さないように、「該当なし」等の表示にしたい。
該当なしの場合、画像のようなエラーが出てしまいます。
どのように回避したらよいかわからない状態です。
ruby
1class CoursesController < ApplicationController 2 def index 3 require 'net/http' 4 require 'json' 5 require 'uri' 6 7 base_url = "https://app.rakuten.co.jp/services/api/Gora/GoraGolfCourseSearch/20170623" 8 9 todoufuken = 8 10 params = { 11 'keyword' => URI.encode('ワイルドダック'), 12 'format' => 'json', 13 'applicationId' => '123456789', 14 'areaCode' => todoufuken, 15 'hits' => 10 16 } 17 uri = URI(base_url + '?' + params.map{|k,v| "#{k}=#{v}"}.join('&')) 18 19 20 begin 21 response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| 22 http.open_timeout = 5 23 http.read_timeout = 10 24 http.get(uri.request_uri) 25 end 26 27 case response 28 when Net::HTTPSuccess 29 @json = JSON.parse(response.body) 30 31 end 32 33 rescue => e 34 Rails.logger.error(e.message) 35 raise e 36 end 37 end 38 39 def show 40 @score = Score.find(params[:id]) 41 end 42 43 44end 45
宜しくお願い致します。
以下、追記
view
<table> <tr> <th>Name</th> </tr> <% if @json['items'].nil? %> <tr> <th>該当データなし!</th> </tr> <% else %> <% @json["Items"].each do|item| %> <tr> <td> <%= item["Item"]["golfCourseName"] %> </td> </tr> <% end %> <% end %> </table>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/20 08:03
2020/09/20 08:20
2020/09/20 08:26
2020/09/20 08:32
2020/09/20 13:07
2020/09/20 13:27
2020/09/20 13:48
2020/09/20 14:06
2020/09/20 16:14
2020/09/21 00:10