プロフィール画像が表示されない
解決したいこと
ユーザー情報にプロフィール画像を表示させたいのですが、以下のエラーが表示されました。
どなたか教えていただきたいです。
該当コードが少ない場合はコメントしていただければ幸いです。
発生している問題・エラー
NameError in Users#show
Showing /home/ec2-user/environment/bookers2_2/app/views/users/_userinfo.html.erb where line #4 raised:
undefined local variable or method `book' for #<ActionView::Base:0x0000000000c058>
Did you mean? @book
@books
該当するソースコード
controllers/users_controller.rb
class UsersController < ApplicationController
before_action :ensure_current_user,{only:[:edit,:update]}
def ensure_current_user
@user = User.find(params[:id])
if @user.id != current_user.id
redirect_to user_path(current_user.id)
end
end
def new
@book=Book.new
end
def edit
@user=User.find(params[:id])
end
def index
@users=User.all
@book=Book.new
@user=current_user
end
def show
@user=User.find(params[:id])
@books=@user.books
@book=Book.new
end
def create
@book=Book.new(book_params)
@book.user_id=current_user.id
@book.save
redirect_to book_path(@book.id)
flash[:success]="You have created book successfully."
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to user_path(@user.id)
flash[:success] = "You have updated user successfully."
else
render :edit
end
end
private
def user_params
params.require(:user).permit(:name, :profile_image, :introduction)
end
def book_params
params.require(:book).permit(:title, :body)
end
end
views/users/_userinfo.html.erb
<h1>User info</h1>
<table class="table">
<tr>
<td><%= image_tag book.user.get_profile_image(100,100) %></td>
<td></td>
</tr>
<tr>
<td>name</td>
<td>introduction</td>
</tr>
<tr>
<td><%= user.name %></td>
<td><%= user.introduction %></td>
</tr>
</table>
<%= link_to edit_user_path(user.id), class:"btn btn-block btn-outline-secondary p-0 mt-3" do %>
<i class="fas fa-user-cog"></i>
<% end %>
views/users/show.html.erb
<div class="container pt-3 pb-5">
<div class="row">
<div class="col-md-3 pr-1">
<%= render "users/userinfo",user:@user %>
<%= render "books/books",book:@book %>
</div>
<div class="col-md-8 offset-md-1">
<hi>Books</hi>
<table class="table">
<thead>
<tr>
<th></th>
<th>Title</th>
<th>Opinion</th>
</tr>
</thead>
<% @books.each do |book| %>
<tbody>
<tr>
<td>
<%= link_to user_path(@user.id) do %>
<%= image_tag book.user.get_profile_image(100,100) %>
<% end %>
</td>
<td>
<%= link_to book_path(book.id) do %>
<%= book.title %>
<% end %>
</td>
<td>
<%= book.body %>
</td>
</tr>
</tbody>
<% end %>
</table>
</div>
</div>
</div>
models/user.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates:name,
presence:true,
length:{minimum:2,maximum:20},
uniqueness:true
validates:introduction,
length:{maximum:50}
has_many :books,dependent: :destroy
end
0