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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

2402閲覧

params[:id]がnilになります

manami0419

総合スコア10

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/09/23 10:53

前提・実現したいこと

Railsで合コンマッチングアプリを作っています。
今使っているモデルは、userモデルと、合コン情報のuser_infoモデルです。
合コン情報の編集機能を実装中に以下のエラーメッセージが発生しました。

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

NoMethodError in UserInfos#pre_page Showing /Users/yuta/projects/i-seki/app/views/user_infos/pre_page.html.erb where line #5 raised: undefined method `id' for nil:NilClass

該当のソースコード

ruby

1<div class="new_user_info btn"> 2<%= link_to '今の情報を入力しよう!', new_user_info_path %> 3</div> 4<div class="edit_user_info btn"> 5<%= link_to '情報を編集する!', edit_user_info_path(@user_info.id), method: :get %> 6</div> 7<div class="to_root btn"> 8<%= link_to 'トップページへ戻る', root_path %> 9</div>

ruby

1class UserInfosController < ApplicationController 2 before_action :authenticate_user!, only: [:new, :create, :edit, :update, :destroy] 3 4 def index 5 @user_infos = UserInfo.all.order("created_at DESC") 6 end 7 8 def new 9 @user_info = UserInfo.new 10 end 11 12 def create 13 @user_info = UserInfo.new(user_info_params) 14 if UserInfo.where(user_id: current_user.id).present? 15 redirect_to action: :false 16 else 17 @user_info.save 18 redirect_to root_path 19 end 20 end 21 22 def edit 23 @user_info = UserInfo.find(params[:id]) 24 end 25 26 def update 27 end 28 29 def destroy 30 end 31 32 def false 33 end 34 35 def pre_page 36 end 37 38 private 39 40 def user_info_params 41 params.require(:user_info).permit(:id, :image, :text, :people_num_id, :area_id).merge(user_id: current_user.id) 42 end 43 44end

試したこと

ターミナルでparamsの中身を調べたところ、:idが含まれていませんでした。

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

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

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

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

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

gouf

2020/09/23 12:34

edit メソッドと同様に、pre_page メソッドにも @user_info インスタンス変数をセットした場合、何か変化は見られますか
manami0419

2020/09/26 03:15

pre_pageメソッドにもインスタンス変数をセットしたところ、解決しました!助かりました!ありがとうございます!(^ ^)
gouf

2020/09/26 03:25

解決した場合、他者の回答ないし自己回答として内容をまとめて それをベストアンサーに設定することで、この質問を解決済みにすることができます
manami0419

2020/09/26 09:53

ご丁寧にありがとうございます! 初心者でまだ使い方がわからずで、、(^^;
guest

回答1

0

ベストアンサー

def pre_page end

とここで @user_info を定義していないからです。
@user_info = UserInfo.然るべき検索式
を入れてください

投稿2020/09/24 08:56

winterboum

総合スコア23329

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

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

manami0419

2020/09/26 03:21

@user_info = UserInfo.allで全て出して、pre_page.indexでeach文を書き、current_userの情報だけを出してあげることで解決できました! ありがとうございました( ´ ▽ ` )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問