投稿者の名前をクリックしたときに、それぞれのユーザーのページへ遷移したいが、どのユーザー名をクリックしても同じユーザーページへ遷移する。個別のページへ遷移する方法がわからない。
発生している問題・エラーメッセージ
NameError in Books#index
Showing /home/ec2-user/environment/knowledge-space/app/views/books/index.html.erb where line #29 raised: undefined local variable or method `user' for #<#<Class:0x00000000055c4400>:0x00007f51e41286e8>
該当のソースコード
<p class="book-label">投稿者 : <%= link_to "#{book.user.nickname}", user_path(user), class: "shop_link" %></p>
試したこと
パスの引数をcurrent_userにした。
userのみにするとエラーが起こる。
[books_controller.rb] class BooksController < ApplicationController before_action :move_to_index, except: [:index, :show] def index @books = Book.includes(:user).order("created_at DESC").page(params[:page]).per(5) end def new @book = Book.new end def create Book.create(image: book_params[:image], title: book_params[:title], author: book_params[:author], Janru: book_params[:Janru], price: book_params[:price], shop_link: book_params[:shop_link], user_id: current_user.id) end def destroy book = Book.find(params[:id]) if current_user.id == book.user_id book.destroy end end def edit @book = Book.find(params[:id]) end def update book = Book.find(params[:id]) if current_user.id == book.user_id book.update(update_params) end end def show @book = Book.find(params[:id]) end private def book_params params.require(:book).permit(:image, :title, :author, :Janru, :price, :shop_link) end def move_to_index redirect_to action: :index unless user_signed_in? end def update_params params.require(:book).permit(:price, :shop_link) end end
[index.html.erb] <div class="contents-row"> <% @books.each do |book| %> <div class="book-box"> <div class="book-img"> <img src="<%= book.image %>" alt="紹介書籍" class="produce-book"> </div> <div class="book-detail"> <p class="book-label"><%= book.title %></p> <span class="book-key"> <p class="book-label"><%= book.author %></p> <p class="book-label"><%= book.Janru %></p> </span> <span class="buy"> <p class="book-label">¥<%= book.price %></p> <p class="book-label"><%= link_to "購入サイトへ", "#{book.shop_link}", class: "shop_link" %></p> </span> <span class="user-edit"> <p class="book-label">投稿者 : <%= link_to "#{book.user.nickname}", user_path(user), class: "shop_link" %></p> <p class="book-label"><%= link_to "詳細", "/books/#{book.id}", method: :get, class: "shop_link" %></p> </span> </div> </div> <% end %> <%= paginate(@books) %> </div>
[users_controller] class UsersController < ApplicationController def show @nickname = current_user.nickname @books = current_user.books.order("created_at DESC").page(params[:page]).per(5) end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/09 15:19
2022/01/09 20:13