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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

628閲覧

ユーザーの個別ページを見ることができない

22KAZUKI

総合スコア4

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/01/09 10:22

投稿者の名前をクリックしたときに、それぞれのユーザーのページへ遷移したいが、どのユーザー名をクリックしても同じユーザーページへ遷移する。個別のページへ遷移する方法がわからない。

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

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">&yen;<%= 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

イメージ説明
![イメージ説明]

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

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

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

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

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

guest

回答1

0

ベストアンサー

user_path(user) を user_path(book.user) に

投稿2022/01/09 13:09

winterboum

総合スコア23567

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

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

22KAZUKI

2022/01/09 15:19

ありがとうございます!エラーは解消されました! ただマイページに入った時の「takaの投稿一覧」の箇所と実際に投稿したデータが、 indexページのどのユーザーの名前をクリックしても全て「taka」のデータになります。 各ユーザーのデータを取得したいですが、方法がわかりません。 users_controllerのコードにミスがありますでしょうか?
winterboum

2022/01/09 20:13

どうなおしたか、viewとcontrollerの現在形を
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問