退会済みユーザー
2020/07/22 08:23 投稿
NoMethodError in Users#tasksの解決方法について |
### 前提・実現したいこと |
現在、ToDo機能付きのメモアプリ作成中です。 |
ユーザー詳細ページからメモ投稿履歴とToDo済みの投稿を分けて見れる形式にしておりますが、 |
ToDo済みの投稿が標記エラーにより表示できない状態です。お手数おかけしますが、解決方法をご教授願います。 |
### 発生している問題・エラーメッセージ |
``` |
NoMethodError in Users#tasks |
undefined method `content' for nil:NilClass |
``` |
ソースコードを後述しますが、メソッドは定義されているように思います。 |
### 該当のソースコード |
```ここに言語名を入力 |
tasks.html.erb(ToDo済み投稿のビュー) |
<% @tasks.each do |task| %> |
<% post = Post.find_by(id: task.post_id) %> |
<div class="posts-index-item"> |
** <%= link_to(post.content, "/posts/#{post.id}") %> **←エラー指定箇所 |
</div> |
<% end %> |
``` |
``` |
routes.rb |
Rails.application.routes.draw do |
root to: 'home#top' |
#ToDo機能に関するルーティング |
post 'tasks/:post_id/create' => 'tasks#create' |
post 'tasks/:post_id/destroy' => 'tasks#destroy' |
#ユーザー機能(users)に関するルーティング |
get 'users/:id/tasks' => 'users#tasks' |
get 'users/:id/edit' => 'users#edit' |
post 'users/:id/update' => 'users#update' |
post 'users/create' => 'users#create' |
get 'signup' => 'users#new' |
get 'users/index' => 'users#index' |
get 'users/:id' => 'users#show' |
post 'login' => 'users#login' |
post 'logout' => 'users#logout' |
get 'login' => 'users#login_form' |
#投稿(posts)に関するルーティング |
get 'posts/index' => 'posts#index' |
get 'posts/new' => 'posts#new' |
get 'posts/:id' => 'posts#show' |
post 'posts/create' => 'posts#create' |
get 'posts/:id/edit' => 'posts#edit' |
post 'posts/:id/update' => 'posts#update' |
post 'posts/:id/destroy' => 'posts#destroy' |
#トップページとアプリ概要ページ(about)に関するルーティング |
get 'home/top' |
get 'home/about' |
``` |
### 試したこと |
ルーティングの確認(漏れなどがないか) |
### 補足情報(FW/ツールのバージョンなど) |
追記:テスト用にテストユーザーを5つ用意しているのですが、**2つ目に作ったテストユーザーでログインした時にのみ**エラーが発生します。 |
Rails ver 6.0.3.2で作成中 |
昨日までソースコードの通りアプリを動かしていたのですが、標記エラーは表示されませんでした。(ルーティングはソースコードの状態から触っていません) |
退会済みユーザー
2020/07/22 08:05 投稿
NoMethodError in Users#task |
NoMethodError in Users#tasksの解決方法について |
### 前提・実現したいこと |
現在、ToDo機能付きのメモアプリ作成中です。 |
ユーザー詳細ページからメモ投稿履歴とToDo済みの投稿を分けて見れる形式にしておりますが、 |
ToDo済みの投稿が標記エラーにより表示できない状態です。お手数おかけしますが、解決方法をご教授願います。 |
### 発生している問題・エラーメッセージ |
``` |
NoMethodError in Users#tasks |
undefined method `content' for nil:NilClass |
``` |
ソースコードを後述しますが、メソッドは定義されているように思います。 |
### 該当のソースコード |
```ここに言語名を入力 |
tasks.html.erb(ToDo済み投稿のビュー) |
<% @tasks.each do |task| %> |
<% post = Post.find_by(id: task.post_id) %> |
<div class="posts-index-item"> |
** <%= link_to(post.content, "/posts/#{post.id}") %> **←エラー指定箇所 |
</div> |
<% end %> |
``` |
``` |
routes.rb |
Rails.application.routes.draw do |
root to: 'home#top' |
#ToDo機能に関するルーティング |
post 'tasks/:post_id/create' => 'tasks#create' |
post 'tasks/:post_id/destroy' => 'tasks#destroy' |
#ユーザー機能(users)に関するルーティング |
get 'users/:id/tasks' => 'users#tasks' |
get 'users/:id/edit' => 'users#edit' |
post 'users/:id/update' => 'users#update' |
post 'users/create' => 'users#create' |
get 'signup' => 'users#new' |
get 'users/index' => 'users#index' |
get 'users/:id' => 'users#show' |
post 'login' => 'users#login' |
post 'logout' => 'users#logout' |
get 'login' => 'users#login_form' |
#投稿(posts)に関するルーティング |
get 'posts/index' => 'posts#index' |
get 'posts/new' => 'posts#new' |
get 'posts/:id' => 'posts#show' |
post 'posts/create' => 'posts#create' |
get 'posts/:id/edit' => 'posts#edit' |
post 'posts/:id/update' => 'posts#update' |
post 'posts/:id/destroy' => 'posts#destroy' |
#トップページとアプリ概要ページ(about)に関するルーティング |
get 'home/top' |
get 'home/about' |
``` |
### 試したこと |
ルーティングの確認(漏れなどがないか) |
### 補足情報(FW/ツールのバージョンなど) |
Rails ver 6.0.3.2で作成中 |
昨日までソースコードの通りアプリを動かしていたのですが、標記エラーは表示されませんでした。(ルーティングはソースコードの状態から触っていません) |