前提・実現したいこと
Railsで地図上にマーカーを表示させるアプリを作っています。
画面上に表示させた地図の、特定のマーカーを押したとき、クエリパラメータにマーカーの情報を載せて非同期でアクセスします。
そして、クエリパラメータの値からDBを検索し、非同期で検索結果をHTMLに表示させたいです。
発生している問題・エラーメッセージ
以下のようなコードを書き、
- マーカーを押した時にクエリパラメータを与えたURLに非同期でアクセス
- Controllerがパラメータを受け取る
までは上手くいきました。
controller
1 def index 2 p params[:name] 3 # => "tarou" 4 unless params[:name].blank? 5 @user = User.find_by(name: params[:name]) 6 # => nil 7 else 8 @user = nil 9 end 10 end
erb
1<script> 2$(".marker").on('click', function(e){ 3 var userName = $(e.currentTarget).data('user'); 4 sidebar.open('profile'); 5 $.ajax({ 6 url: `?name=${userName}`, 7 type: 'GET', 8 success: function(data){ 9 console.log("<%= @user %>"); 10 }, 11 error: function(data){ 12 console.log("error"); 13 } 14 }) 15 }); 16</script>
しかし、肝心のクエリパラメータの値をもとにDBを検索するところ
controller
1 # @userがnil になってしまう 2 @user = User.find_by(name: params[:name]
が上手く行かず、@userがnilとなってしまいます。
どうやら、DB検索はRailsサーバを再起動した際の一番最初のアクセスしか行われないようです。
しかし、具体的な理由がわからず、対処法もさっぱり思いつきません。
どなたかアドバイスやご回答を、よろしくお願いいたします。。。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/04/22 06:58