🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

848閲覧

Couldn't find User without an IDのエラーが出る

kammy0603

総合スコア3

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/28 05:20

編集2021/02/28 10:36

前提・実現したいこと

ユーザーの詳細プロフィールを表示させたいです。

発生している問題・エラーメッセージ

ActiveRecord::RecordNotFound in UsersController#show Couldn't find User without an ID

Request
Parameters:

{"_method"=>"get", "authenticity_token"=>"G1A7N1UIfBTXj4iLujzOGnMQj53EPt9gB0L6GXVggsVNEsqIIxN6kzPx6QyLh9KwjxuCvMhanuw0WIFDCMh/iw==", "format"=>"1"}

該当のソースコード

(routes.rb) Rails.application.routes.draw do root to: "teams#index" get 'users/index' get 'users/search' get 'users/show' post 'teams/new' get 'teams/list' get 'teams/search' get 'teams/show' devise_for :users, :controllers => { :registrations => 'users/registrations', :sessions => 'users/sessions' } resources :users resources :teams end
(users_controller) class UsersController < ApplicationController before_action :search_user, only: [:index, :search] def index @users = User.all @user = User.where(category_id: params[:id]).order('created_at DESC') end def search @results = @p.result end def show @user = User.find(params[:id]) end private def search_user @p = User.ransack(params[:q]) end def set_user_column @user_term_id = User.select('term_id').distinct # 重複なくnameカラムのデータを取り出す end end
(show.html.erb) <%= render "shared/header" %> <div class="item-show"> <div class="item-box"> <h2 class="name"> <%= @user.name %> </h2> <div class='item-img-content'> <%= image_tag @user.avatar, class:"item-box-img" %> </div> <div class="item-price-box"> </div> <div class="item-explain-box"> <span><%= "メンバー詳細" %></span> </div> <table class="detail-table"> <tbody> <tr> <th class="detail-item">氏名</th> <td class="detail-value"><%= @user.name %></td> </tr> <tr> <th class="detail-item">野球経歴</th> <td class="detail-value"><%= @user.term.name %></td> </tr> <tr> <th class="detail-item">希望する野球レベル</th> <td class="detail-value"><%= @user.level.name %></td> </tr> <tr> <th class="detail-item">希望活動頻度</th> <td class="detail-value"><%= @user.frequency.name %></td> </tr> <tr> <th class="detail-item">在住している都道府県</th> <td class="detail-value"><%= @user.prefecture.name %></td> <tr> </tbody> </table> <div class="option"> <div class="favorite-btn"> <%= image_tag "star.png" ,class:"favorite-star-icon" ,width:"20",height:"20"%> <span>お気に入り 0</span> </div> </div> </div> <%# /商品の概要 %> <div class="comment-box"> <form> <textarea class="comment-text"></textarea> <p class="comment-warn"> 相手のことを考え丁寧なコメントを心がけましょう。 <br> 不快な言葉遣いなどは利用制限や退会処分となることがあります。 </p> <button type="submit" class="comment-btn"> <%= image_tag "comment.png" ,class:"comment-flag-icon" ,width:"20",height:"25"%> <span>コメントする<span> </button> </form> </div> <div class="links"> <a href="#" class="change-item-btn"> < 前の商品 </a> <a href="#" class="change-item-btn"> 後ろの商品 > </a> </div> </div> <%= render "shared/footer" %>

Showを呼ぶView

(users/index.html.erb) <h1> メンバー・助っ人検索 </h1> <%= search_form_for @p, url: users_search_path do |f| %> <%= f.label :term_id_eq, '野球歴' %> <%= f.collection_select :term_id_eq, Term.all, :id, :name, include_blank: '指定なし' %> <%= f.label :level_id_eq, '希望する野球レベル ' %> <%= f.collection_select :level_id_eq, Level.all, :id, :name, include_blank: '指定なし' %> <%= f.label :frequency_id_eq, '希望活動頻度' %> <%= f.collection_select :frequency_id_eq, Frequency.all, :id, :name, include_blank: '指定なし' %> <%= f.label :prefecture_id_eq, '都道府県' %> <%= f.collection_select :prefecture_id_eq, Prefecture.all, :id, :name, include_blank: '指定なし' %> <br> <%= f.submit '検索' %> <br> <%# 商品一覧 %> <% @users.each do |user| %> <td> <br> <%= link_to users_show_path(user.id), class: 'user_derail' do %> <li class="member-index"> <%= image_tag user.avatar , class: "item-img" %> <%= user.name %> <%= user.term.name %> <%= user.level.name %> <%= user.frequency.name %> <%= user.prefecture.name %> </li> <% end%> <% end %> <% end %>
(user.rb) class User < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions belongs_to :prefecture belongs_to :term belongs_to :level belongs_to :frequency belongs_to :registration devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_one_attached :avatar # validates_format_of :password, with: PASSWORD_REGEX, message: 'には英字と数字の両方を含めて設定してください' with_options presence: true, format: { with: /\A[ぁ-んァ-ヶ一-龥々]+\z/, message: '全角文字を使用してください' } do validates :name end with_options presence: true, format: { with: /\A[ァ-ヶ]+\z/, message: '全角カナ文字を使用してください' } do validates :name_kana end validates :avatar, presence: true validates :birthday, presence: true validates :prefecture_id, presence: true validates :term_id, presence: true validates :level_id, presence: true validates :frequency_id, presence: true validates :registration_id, presence: true validates :prefecture_id, :term_id, :level_id, :frequency_id, :registration_id, numericality: { other_than: 1 } end

補足情報(FW/ツールのバージョンなど)

mac OS Big Sur 11.2.1
ruby 2.6.5
Rails 6.0.3.4

解決策が分からず、回答いただけると幸甚です。

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

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

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

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

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

winterboum

2021/02/28 09:38

showの呼び方に問題がありそうです。 showを呼ぶviewも載せてください
kammy0603

2021/02/28 10:32

返信ありがとうございます。 showを呼ぶViewを追記いたしました。
guest

回答1

0

ベストアンサー

link_to users_show_path(user.id)users_show_path が??です
resources :users があるのでlink_to user_path(user.id)でためして。
get 'users/show' はuser.idを渡す宣言がないですね。

投稿2021/02/28 12:54

winterboum

総合スコア23567

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

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

kammy0603

2021/02/28 13:38

ありがとうございます!無事解決いたしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問