前提・実現したいこと
group_idを取得したいため、pricesのapiをルートでネストさせたのですが、コントローラーで**group = Group.find(params[:group_id])**と記述してもidがうまく取得できません。しかし同じようにapiディレクトリの中に作成したmessageでは取得できました。この原因・解決方法を実現したいです。
該当のソースコード
routes.rb
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 :memos, only: [:index, :new, :create, :destroy, :edit, :update] resources :prices, only: [:index, :new, :create, :edit, :update, :destroy] 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
pricesコントローラー
class Api::PricesController < ApplicationController def index group = Group.find(params[:group_id]) return nil if params[:keyword] == "" prices = Price.where(['name LIKE ?', "%#{params[:keyword]}%"]).limit(8) @prices = prices.where(group_id: group) respond_to do |format| format.html format.json end end end
messagesコントローラー
class Api::MessagesController < ApplicationController def index group = Group.find(params[:group_id]) last_message_id = params[:id] @messages = group.messages.includes(:user).where("id > ?", last_message_id) end end
発生している問題・エラーメッセージ
[1] pry(#<Api::PricesController>)> group => nil [2] pry(#<Api::PricesController>)> params => <ActionController::Parameters {"keyword"=>"", "format"=>"json", "controller"=>"api/prices", "action"=>"index", "group_id"=>":group_id"} permitted: false> ActiveRecord::RecordNotFound (Couldn't find Group with 'id'=:group_id):
試したこと
エラーより送られてくるデータ自体にidが含まれておらず、取得できない状態です。僕の認識ではネストさせることにより親のidを持たせることができるだったので、なぜ取得できていないのか原因がわからず止まっています。もしかしたらでもいいので何か知識をお貸しいただければ嬉しいです。お願いいたします。また何か必要な情報がありましたらご提示させていただきますので、コメントまでお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。