google API等を使用し、場所を登録するアプリを作成しています。
docker上では問題なく登録できましたが、heroku上で以下のエラーが発生し困っています。
herokuログ
12022-05-23T08:54:17.862694+00:00 app[web.1]: I, [2022-05-23T08:54:17.862622 #4] INFO -- : [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] Started GET "/places?place%5Baddress%5D=%E6%97%A5%E6%9C%AC%E3%80%81%E3%80%92333-0842+%E5%9F%BC%E7%8E%89%E7%9C%8C%E5%B7%9D%E5%8F%A3%E5%B8%82%E5%89%8D%E5%B7%9D%EF%BC%94%E4%B8%81%E7%9B%AE%EF%BC%94%EF%BC%95%E2%88%92%EF%BC%91%EF%BC%91&place%5Blatitude%5D=35.8370795&place%5Blongitude%5D=139.7098658&place%5Bname%5D=%E7%84%BC%E9%B3%A5%E3%81%AE%E3%82%B9%E3%82%A8%E3%83%92%E3%83%AD&place%5Bplace_id%5D=ChIJNWOOxcKUGGARPHuBNA6Bqoo&place%5Bprice_level%5D=&place%5Brating%5D=4&place%5Buser_id%5D=4" for 103.3.6.238 at 2022-05-23 08:54:17 +0000 22022-05-23T08:54:17.867284+00:00 app[web.1]: F, [2022-05-23T08:54:17.867223 #4] FATAL -- : [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] 32022-05-23T08:54:17.867324+00:00 app[web.1]: F, [2022-05-23T08:54:17.867287 #4] FATAL -- : [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] ActionController::RoutingError (uninitialized constant Places 42022-05-23T08:54:17.867324+00:00 app[web.1]: Did you mean? Place): 52022-05-23T08:54:17.867326+00:00 app[web.1]: F, [2022-05-23T08:54:17.867313 #4] FATAL -- : [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] 62022-05-23T08:54:17.867364+00:00 app[web.1]: F, [2022-05-23T08:54:17.867338 #4] FATAL -- : [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.6/lib/active_support/inflector/methods.rb:283:in `const_get' 72022-05-23T08:54:17.867365+00:00 app[web.1]: [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.6/lib/active_support/inflector/methods.rb:283:in `block in constantize' 82022-05-23T08:54:17.867365+00:00 app[web.1]: [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.6/lib/active_support/inflector/methods.rb:281:in `each' 92022-05-23T08:54:17.867365+00:00 app[web.1]: [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.6/lib/active_support/inflector/methods.rb:281:in `inject' 102022-05-23T08:54:17.867366+00:00 app[web.1]: [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] 11ーー略ーー 122022-05-23T08:54:17.867387+00:00 app[web.1]: [893b8cc0-5f58-4c8f-ae95-9115ce9549f7] vendor/bundle/ruby/2.5.0/gems/puma-3.12.6/lib/puma/thread_pool.rb:135:in `block in spawn_thread' 132022-05-23T08:54:17.867867+00:00 heroku[router]: at=info method=GET path="/places?place%5Baddress%5D=%E6%97%A5%E6%9C%AC%E3%80%81%E3%80%92333-0842+%E5%9F%BC%E7%8E%89%E7%9C%8C%E5%B7%9D%E5%8F%A3%E5%B8%82%E5%89%8D%E5%B7%9D%EF%BC%94%E4%B8%81%E7%9B%AE%EF%BC%94%EF%BC%95%E2%88%92%EF%BC%91%EF%BC%91&place%5Blatitude%5D=35.8370795&place%5Blongitude%5D=139.7098658&place%5Bname%5D=%E7%84%BC%E9%B3%A5%E3%81%AE%E3%82%B9%E3%82%A8%E3%83%92%E3%83%AD&place%5Bplace_id%5D=ChIJNWOOxcKUGGARPHuBNA6Bqoo&place%5Bprice_level%5D=&place%5Brating%5D=4&place%5Buser_id%5D=4" host=blooming-eyrie-90060.herokuapp.com request_id=893b8cc0-5f58-4c8f-ae95-9115ce9549f7 fwd="103.3.6.238" dyno=web.1 connect=0ms service=7ms status=404 bytes=1902 protocol=https 14
おそらくどこかでPlacesが初期化できていない?と思っていますがどこが原因か全くわからず困っています。
エラー発生原因としては
home.html.erb
1<%if user_signed_in?%> 2 <%= link_to( '登録', places_path( :place => { :user_id => @user, 3 :name => @client.spot(place.place_id, :language => 'ja').name, 4 :latitude => place.lat, 5 :longitude => place.lng, 6 :price_level => place.price_level, 7 :rating => place.rating, 8 :place_id => place.place_id, 9 :address => @client.spot(place.place_id, :language => 'ja').formatted_address, } ), 10 class:"btn btn-success register col-lg-12 mt-3 p-2" , 11 :method => 'post' )%> 12 <%else%> 13 <%= link_to new_user_session_path do%> 14 <div><p class="btn btn-success col-lg-12 mt-3 p-2" >ログイン</p></div> 15 <%end%> 16 <%end%>
この登録ボタンを押したときに上記のエラーが発生しています。
places_controller.rb
1class PlacesController < ApplicationController 2 3def create 4 @place = Place.new(place_params) 5 6 respond_to do |format| 7 if @place.save 8 format.html { redirect_to my_places_todo_path, notice: "#{@place.name} の位置情報を保存しました" } 9 else 10 format.html { render :index, notice: "#{@place.name} の位置情報を保存できませんでした" } 11 end 12 end 13 end 14 15private 16 # Never trust parameters from the scary internet, only allow the white list through. 17 def place_params 18 params.require(:place).permit(:user_id, :name, :latitude, :longitude, :address, :price_level, :rating, :place_id) 19 end 20end
routes.rb
1Rails.application.routes.draw do 2 3 #place 4 namespace :places do 5 # get 'place/list' request 6 get 'home' 7 end 8 resources :places, :only => [ :index, :create, :destroy ,:home] 9 # 記事詳細表示のルーティングにネスト 10 resources :places, expect: [:index] do 11 resource :favorites, only: [:create, :destroy] 12 end 13 14#user 15 devise_for :users, controllers: { 16 sessions: "users/sessions", 17 registrations: "users/registrations" 18 } 19 # マイページのルーティングにネスト 20 resources :users, only: [:show, :edit, :update] do 21 get :favorites, on: :collection 22 end 23 #トップページをログイン画面に 24 devise_scope :user do 25 root "users/sessions#new" 26 end 27 get '/users/sign_out' => 'devise/sessions#destroy' 28 get 'users/show' 29 30end
正直何が原因かよくわからず、どこのファイルを見ればよいかわからない状態です。
調べてもcontrollerに関するuninitialized constantばかりで解決できませんでした。
お力貸していただければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/26 02:30