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

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

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

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

Ruby on Rails 6

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

845閲覧

NoMethodError Tasks#indexが解決できない

shark556

総合スコア5

Ruby

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

Ruby on Rails 6

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/08/10 10:24

編集2020/08/10 10:32

前提・実現したいこと

vscodeで基本的な7つのアクション(index,new,create,show,edit,update,destroy)とログイン機能を使用したwebアプリケーションを作成しています。
途中まで動作確認はできていたのですが、どこからかわからないのですが、下記の様なエラーが発生して困っています。

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

エラーメッセージ

NoMethodError と表示されてしまう

該当のソースコード

<div class="side-bar"> <div class="side-bar__in"> <% if user_signed_in? %> <div class="side-bar__in--up"> <ul> <li><%= link_to "ログアウト", destroy_user_session_path, method: :delete, class:"btn-flat-border"%></li> <li><%= link_to '新規投稿',new_task_path, class:"btn-flat-border__orange"%></li> </ul> </div> <% elsif %> <div class="side-bar__in--up"> <ul> <li><%= link_to "ログイン", new_user_session_path, class: "btn-flat-border" %></li> <li><%= link_to "新規登録", new_user_registration_path, class: "btn-flat-border" %></li> </li> </ul> </div> <% end %> </div> </div>

ruby

1class TasksController < ApplicationController 2 before_action :move_to_index, except: [:index, :show] 3 4 def index 5 @tasks = Task.all 6 end 7 8 def new 9 @task = Task.new 10 end 11 12 def create 13 @task = Task.new(task_params) 14 15 if @task.save 16 redirect_to @task 17 else 18 render :new 19 end 20 end 21 22 def show 23 @task = Task.find(params[:id]) 24 end 25 26 def edit 27 @task = Task.find(params[:id]) 28 end 29 30 def update 31 @task = Task.find(params[:id]) 32 @task.update(task_params) 33 redirect_to @task 34 end 35 36 def destroy 37 task = Task.find(params[:id]) 38 task.destroy 39 redirect_to root_path 40 end 41 42 43private 44 def task_params 45 params.require(:task).permit(:submitter, :recipient,:date_of_receipt,:department,:device,:model_number,:serial_number,:failure_content,:correspondence,:note,:status).merge(user_id: current_user.id) 46 end 47 48 def move_to_index 49 unless user_signed_in? 50 redirect_to action: :index 51 end 52 end 53end

試したこと

エラーメッセージを見るにTasksコントローラにindexアクションがないと記載されていると思うのですが、しっかりと記載されているはずであるのにエラーが起きてしまいます。
ためしにside-barからif user_signed_in?以下を全削除するとエラーなくTasks#indexへアクセスは可能でした。そこからshowはアクセスできましたが、editに入ろうとするとNoMethodError TasksController#edit が表示されてしまいます。どなたか分かるからいらっしゃいましたらご教授いただけたら幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージを見るにTasksコントローラにindexアクションがないと記載されていると思うのですが

違います。ビューに書かれたuser_signed_in?メソッドが見つからないというエラーです。

投稿2020/08/10 10:38

maisumakun

総合スコア145121

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

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

shark556

2020/08/10 12:18

回答ありがとうございます!そうなんですね。 ユーザー登録機能はdeviseを使用して追加しており、途中までは動作していたので作業の途中でdeviseが機能しなくなった可能性も考えたいと思います。
shark556

2020/08/10 12:30

devise関連で調べていたら、どうやらどこかの段階で routes.rb の devise_for :users を消去していた様です。ご教授ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問