ガチガチの初心者です。
ログイン機能付きの投稿サイトを作っています。
プロフィールなどをuser
投稿をbookモデルで管理しています。
showページを
userのマイページとしてこれまでの投稿を表示するページとして機能させたいと考えています。
(それぞれのuserに紐付けられた投稿のみを表示したい)
show.html.erb
<h1>Books</h1> <thead> <tr> <th></th> <th>Title</th> <th>Introduction</th> </tr> </thead> <tbody> <% @books.each do |book| %> <tr> <td><%= attachment_image_tag user, :profile_image, :fill, 15, 15, fallback: "no_image.jpg", class: "img-circle pull-left profile-thumb" %></td> <td><%= book.title %></td> <td><%= book.body %></td> <!-- <td><%= link_to 'Show', book_path %></td> --> <% if user == current_user %> <td><%= link_to 'Edit', edit_book_path(book) %></td> <td><%= link_to 'Destroy', book, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> <% end %>
users_controller.rb
@user = User.find(params[:id]) @books = @user.books
user.rb
has_many :books, dependent: :destroy
これらのように記述し、
@userをidで指定した後@user.booksを@booksとし、.eachで表示すればうまくいくと思ってのですが@userが未定義だとエラーが出てしまいました。どなたかアドバイスいただけるとありがたいです。
ファイル名のパスとコントローラーのアクションも書いてください。
(このままでは、ビューがどのコントローラーのshowアクションに紐付いたものなのか、そしてコントローラーのコードがどのアクションで実行されるコードなのか判別できません)
users_controller.rbのshowアクションに記載しました。
パスはログイン後に表示するページとしても利用したかったため。routes.rbに root to: "users#show"としたためroot_pathになっています。
今打っていて思ったのですが、urlを/のみで表示させようとしているのにコントローラーでidを要求するのはおかしい気もします。
要領を得ない答えになってしまっているかもしれませんが、何かアドバイスいただければ幸いです。
回答1件
あなたの回答
tips
プレビュー