前提・実現したいこと
DBで保存した内容をインクリメンタルサーチを使い表示したいのですが、インクリメンタルサーチ実装時のajaxでurlを指定する際、rails routesで確認し該当するパスを打ち込んでも404のエラーがコンソール上で表記されるのでこの問題を解決したい。
発生している問題・エラーメッセージ
jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js? body=1:10255 GET http://localhost:3000/groups/1/prices/api/prices?keyword= 404 (Not Found) body=1:18 失敗です と検証のコンソール上に表記される。
該当のソースコード
assets/javascripts/module/prices.js
jquery
1$(function(){ 2 $(function() { 3 $(".search__field").on("keyup", function() { 4 let input = $(".search__field").val(); 5 $.ajax({ 6 type: "GET", 7 url: "api/prices", 8 data: { keyword: input }, 9 dataType: "json" 10 }) 11 .done(function(prices) { 12 console.log("成功です"); 13 }) 14 .fail(function() { 15 console.log("失敗です"); 16 }); 17 }); 18 }); 19}); 20
app/views/prices/new.html.haml
haml
1.price 2 = form_with model: [@group, @price], local: true do |f| 3 .price__form 4 = f.label :品名 5 = f.text_field :name 6 = f.label :値段(税込み、半角英数字) 7 = f.text_field :number 8 円 9 = f.submit "登録" 10.sarch 11 %input.search__field{placeholder: "検索したい品物", type: "text"} 12 #search__result
コントローラー(controllers/api/prices_controller.rb)
class Api::PricesController < ApplicationController def index respond_to do |format| format.html format.json end end
ルーティング
Rails.application.routes.draw do devise_for :users root "groups#index" resources :users, only: [:index, :edit, :update] resources :groups, only: [:new, :create, :edit, :update] do resources :prices, only: [:index, :new, :create] namespace :api do resources :prices, only: :index, defaults: { format: 'json' } end resources :messages, only: [:index, :create] namespace :api do resources :messages, only: :index, defaults: { format: 'json' } end end end
試したこと
urlの表記の仕方をいろいろ試したんですが同じ結果でした。またajax前のイベント発火の際はうまく読み取れていました。
rails routesの結果
group_api_prices GET /groups/:group_id/api/prices(.:format) api/prices#index {:format=>"json"}
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/01 10:11
2020/08/01 10:31 編集
2020/08/01 10:57
2020/08/01 11:04
2020/08/01 11:20
2020/08/01 13:05