質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

926閲覧

インクリメンタルサーチを実装するために作成したapiディレクトリで、idがうまく取得できない!!

suguru060305

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/08/29 08:25

前提・実現したいこと

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を持たせることができるだったので、なぜ取得できていないのか原因がわからず止まっています。もしかしたらでもいいので何か知識をお貸しいただければ嬉しいです。お願いいたします。また何か必要な情報がありましたらご提示させていただきますので、コメントまでお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

messageはformを使い、priceはinputのみだったのでデータの中身に相違がある感じでした。
なのでcurrent_user.groups.idsでユーザーが所属しているグループのものだけを検索で表示させるように制限させました。

投稿2020/08/29 12:27

suguru060305

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問