##小説サイトを真似して練習中に起きたエラーとなります。
最初はエラーではなかったのですが、その他の場所を弄りつつ……いざ他のところが出来た。と思い見直していたら、エラーではなかった場所がエラーになっていました。
■主なTable
・users
・novel_lists
・novel_posts
users 1:多 novel_lists users 1:多 novel_posts novel_lists 1:多 novel_posts
###エラー内容
usersコントローラのshowの@userの箇所でエラーとなっています。
ActiveRecord::RecordNotFound in UsersController#show Couldn't find User with 'id'=7 Extracted source (around line #10): def show @user = User.find(params[:id]) ここがエラー箇所です。 @novel_list = @user.novel_lists @followings = @user.followings.page(params[:page]) @favposts = current_user.favposts.page
元々エラーもなく、マイページ指定してあるusers/show.html.erbに飛べていたのですが、
いつの間にか入れなくなってしまいました。
###ルーティング
resources :users do member do get :followings get :followers end end resources :novel_lists do collection do get :nextnovel get :novel_list_history end resources :novel_posts, only: [:index, :new, :create, :destroy] do member do get :novelpage end end end
特に変なルーティング設定はしていないと思います。
user GET /users/:id(.:format) users#show
Userモデルのusersコントローラのshowアクションにてparamsで:idを取る場合ルーティングさえ合っていれば
idはきちんと取れると認識しているのですが何故ここでエラーが出てしまうのでしょうか。
###show.html.erb
<div id="anotheruser_info"> <ul> <li><span class="favorite-haiti"><%= render 'relationships/follow_button', user: @user %></span></li> </ul> <h1> <%= @user.name %><span class="mini">さんのマイページ</span> </h1> </div> <div id="contents"> <div id="main"> <!--novellist_top--> <div id="novellist_top"> <h3> <span class="allnovel"> 全5作品 </span> </h3> <% @novel_list.each do |novel_list| %> <div class="novellist_toptable"> <tbody> <tr> <td><%= link_to novel_list.title, novel_list_path(novel_list) %></td> <td><%= novel_list.genre %></td> </tr> <tr> <td></td> </tr> </tbody> </table> </div> <% end %>
少し長くなるので、抜粋。
他のモデルのコントローラで、userをとるわけではなく、useモデルのusersコントローラでidが取れないのが
良くわかっていないです、何故こうなってしまったのでしょうか。
###試した事。
find_by を使う。 この場合、1つしか返してくれないのでエラーは出ないですが、全てが同じ人になってしまいます。 current_user この場合もエラーは出ませんが、ログインしてるユーザー本人に紐づいてしまうので他のユーザーのマイページに飛べなくなってしまいます。
その他直す際に必要と思われるものがありましたら、貼らせて頂きます。
原因が分からず苦戦しております、分かる方いらっしゃいましたらアドバイスお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/15 07:40
2020/03/15 14:36