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

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

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

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

Q&A

解決済

1回答

233閲覧

paginateで次のページを表示しようとするとActiveRecord::RecordNotFoundのエラーがでる

m.shinji

総合スコア20

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/07/07 12:35

編集2019/07/07 14:22

解決したいこと

railsで作ったWebサイトに、kaminariでpaginateを実装していて、最初のページは問題なく表示されるのですが、次のページに飛ぶとActiveRecord::RecordNotFoundのエラーが出てしまいます。
これを解決して、検索結果のページで問題なくpaginateができるようにしたいです。

エラー内容

ActiveRecord::RecordNotFound in SubmitsController#show Couldn't find Submit with 'id'=search_show def show @submit = Submit.find(params[:id]) //ここでエラーが出ています。 end

該当コード

controller

1 def search_show 2 @submits = Submit.search(params[:area_search],params[:purpose_search],params[:price_search]).order("id DESC").page(params[:page]).per(5) 3 if !@submits 4 @submits = Submit.all 5 end 6 end 7 8 def show 9 @submit = Submit.find(params[:id]) 10 end

検索結果がsearch_showアクションで表示して、その検索結果一覧から詳細ページであるshowアクションに遷移します。

Viewには
<%= paginate @submits %>
のみしか記載していません。

エラーの内容的にルーティング間違えている可能性もあるので、下記に該当のルーティングを書きます。

routes

1resources :submits 2get 'submits/search_show/' => 'submits#search_show' 3post 'submits/search_show/' => 'submits#search_show' 4get 'submits/show/:id/' => 'submits#show' 5delete 'submits/:id' => 'submits#destroy'

色々調べてもわからなかったので、わかるかたいましたら教えていただきたいです!

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

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

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

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

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

winterboum

2019/07/07 14:18

routsがおかしいですね。 その4行の前に resources :submits があったりしませんか?
m.shinji

2019/07/07 14:23

書き漏れていました。resources :submitsは記載してあります。 上記、投稿を修正しました。
guest

回答1

0

ベストアンサー

routsは上から順番に見ていって、最初にマッチした行が使われます。

resources :submits

で、get 'submits/:id' => 'submits#show' が定義されるので
submits/search_show は id=search_show な #show と解釈されます。

resources :submits を submitsたちの最後に持ってきて下さい

投稿2019/07/07 14:57

winterboum

総合スコア23329

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

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

m.shinji

2019/07/07 15:02

なるほどですね! resources :submitsを一番最後に持っていったらできました! ありがとうございます!
winterboum

2019/07/07 20:58

routesに問題が有るのでは?と予想出来ていたところは流石です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問