前提・実現したいこと
Railsでuserが商品(ネイル)を投稿するシステムを作っています。
userが商品を投稿し、userのマイページで、current_userだけが投稿した内容を表示させたいのですが
全く反映がされません。
(nailのindex画面では全情報を反映させるようにしており、そこは問題なく表示ができています)
表示させたいマイページ
show
1<div class="container"> 2 <h2>マイページ</h2> 3 <% @nails.each do |nail| %> 4 <%= nail.name %> 5 <%= attachment_image_tag nail,:image, :fill, 50, 50 ,format: "jpeg" %> 6 <%= nail.price %> 7 <%= nail.introduction %> 8 <% end %> 9 10 <%= link_to "新規投稿", new_nail_path %> 11</div> 12_____
userのコントローラー
controller
1class Users::UserController < ApplicationController 2 3 def show 4 @user = current_user 5 @nails = Nail.where(user_id: @user.id) 6 end 7 8 def edit 9 @nail = Nail.find(paramas[:id]) 10 end 11 12 private 13 def nail_params 14 params.require(:nail).permit(:name, :image, :brand, :introduction, :price, :user_id) 15 end 16 17 def user_params 18 params.require(:user).permit(:last_name, :first_name,:last_name_kana, :first_name_kana, :address, :telephone_number, :email) 19 end 20end
###ルーティング
route
1 2Rails.application.routes.draw do 3 devise_for :users, controllers: { 4 registrations: 'users/registrations', 5 sessions: "users/sessions", 6 } 7 8namespace :users do 9 resources :user,only: [:show, :edit] 10 resources :relationships 11 end 12 13 resources :nails do 14 resource :favorites, only:[:create, :destroy] 15 resources :nail_comments,only:[:index,:show,:edit,:new,:destroy,:create] 16 end 17 18 root 'home#top' 19 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 20end 21
###ネイルの新規投稿画面
<div class="container"> <%= form_with model: @nail, url: nails_path, method: :post, local: true do |f| %> <%= f.hidden_field :nail_id %> <table> <tr> <th><%= f.label :user, '名前' %></th> <th><%= f.label :name, '商品名' %></th> <th><%= f.label :price, '価格' %></th> <th><%= f.label :image,'商品画像' %></th> <th><%= f.label :introduction, '商品説明' %></th> </tr> <tr> <td><%= f.text_field :user %></td> <td><%= f.text_field :name %></td> <td><%= f.text_field :price %>円</td> <td><%= f.attachment_field :image %></td> <td><%= f.text_area :introduction %></td> </tr> <tr> <td><%= f.submit '登録' %></td> </tr> </table> <% end %> </div>
###ネイルのコントローラー
class NailsController < ApplicationController before_action :authenticate_user! before_action :set_nail, only: [:show, :edit, :update, :destroy] def new @nail = Nail.new end def create @nail = Nail.new(nail_params) @nail.save! redirect_to nails_path end def index @nails = Nail.all end private def nail_params params.require(:nail).permit(:relationship_id, :name, :image, :brand, :introduction, :price, :user_id) end def set_nail @nail = Nail.find(params[:id]) end end
model
1class Nail < ApplicationRecord 2 attachment :image 3 belongs_to :user, optional: true 4 has_many :favorites 5 has_many :nail_comments 6end 7_________________________________ 8class User < ApplicationRecord 9 # Include default devise modules. Others available are: 10 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 11 devise :database_authenticatable, :registerable, 12 :recoverable, :rememberable, :validatable 13 14 has_many :nails 15 has_many :nail_comments 16end
試したこと
userコントローラーの記載方法を何度か変更してみましたが、結果は変わらず。
@user = current_user @nails = Nail.where(user_id: @user.id) →@nails = @user.nails.all
ここに問題に対して試したことを記載してください。
##binding.pryで調べてみました
3: def show 4: @user = current_user 5: @nails = Nail.where(user_id: @user.id) 6: binding.pry => 7: end [1] pry(#<Users::UserController>)> @nails Nail Load (2.1ms) SELECT "nails".* FROM "nails" WHERE "nails"."user_id" = ? [["user_id", 3]] ↳ app/controllers/users/user_controller.rb:7 => [#<Nail:0x00000000054be060 id: 17, created_at: Sat, 14 Nov 2020 03:43:42 UTC +00:00, updated_at: Sat, 14 Nov 2020 03:43:42 UTC +00:00, relationship_id: nil, user_id: 3, name: nil, image_id: nil, brand: nil, introduction: nil, price: nil>]
ちなみにshow画面で
@nails = Nail.allにしてみると全ての投稿内容は反映できています。
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.3
初学者かつ、初めての質問となりますので、何か不足等ありましたらご指摘ください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/17 01:13 編集
2020/11/17 02:31
2020/11/17 03:52
2020/11/17 04:17
2020/11/17 04:56
2020/11/17 05:12
2020/11/17 05:30
2020/11/17 06:07
2020/11/17 06:12
2020/11/17 06:24
2020/11/17 06:41
2020/11/17 06:59
2020/11/17 07:33
2020/11/17 07:47
2020/11/17 08:14
2020/11/17 08:33
2020/11/17 10:34