NoMethodError in Books#createが解決できません
解決したいこと
NoMethodError inの解決方法をお尋ねしたいです。
rubyのバージョンは3.1.2で、Railsのバージョンは6.1.6.1です。
Ruby on Railsで本のタイトルと説明を投稿できるアプリを開発しています。
バリデーションを実装しようとしていました。ただ、投稿フォームを空のまま投稿ボタンを押したのにNoMethodErrorが出てしまっている状態です。
解決方法を教えていただければ幸いです。
発生している問題・エラー
NoMethodError in Books#create
Showing /home/ec2-user/environment/bookers2/app/views/users/_list.html.erb where line #3 raised:
undefined method `profile_image' for nil:NilClass
Bookのコントローラー
### class BooksController < ApplicationController
def new
end
def create
@book = Book.new(book_params)
@book.user_id = current_user.id
if @book.save
flash[:notice] = "You have created book successfully."
redirect_to book_path(@book.id)
else
@books = Book.all
render :index
end
end
,
,
,
def book_params
params.permit(:title,:body)
end
end
Bookのモデル
class Book < ApplicationRecord
belongs_to :user
validates :title,presence: true
validates :body,presence: true
end
app/views/users/_list.html.erb
<h1>User info</h1>
<% if user.profile_image.attached? %>
<%= image_tag user.profile_image, size: "100×100" %>
<% else %>
<%= image_tag 'no_image', size: "100×100" %>
<% end %>
<table>
<thead>
<tr>
<th>name</th>
<th>introduction</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= user.name %></td>
<td><%= user.introduction %></td>
</tr>
</tbody>
</table>
<%= link_to 'edit', edit_user_path(user.id) %>
自分で試したこと
_list.html.erbにある<% if user.profile_image.attached? %>のuserがnilになっているので、bookコントローラーのcreateアクションに@user = user.profile.imageを入れてみたりしたのですが、解決しませんでした。