テーブル名
・posts
・itemss
1(posts):多(items)の関係です。
itemsには
・item_image
・brand
・size
・price
・products_name
・post_id
・user_id
以上の7つのカラムがあります。
エラー内容
html
1items.controller.erb 2class ItemsController < ApplicationController 3 def index 4 @posts = Post.all 5 @user = current_user 6 @items = @user.items 7 #@userの子であるitemに限定する。 8 end 9 10 def new 11 @post = Post.find_by(id: params[:id]) 12 @item = Item.new(item_image: params[:item_image], brand: params[:brand], size: params[:size], price: params[:price], products_name: params[:products_name], post_id: params[:post_id]) 13 end 14 15 def create 16 @item = Item.new(item_image: params[:item_image], brand: params[:brand], size: params[:size], price: params[:price], products_name: params[:products_name], post_id: params[:post_id]) 17 @item.user_id = current_user.id 18 if @item.save 19 @item.item_image="#{@item.id}.jpg" 20 image=params[:item_image] 21 File.binwrite("app/assets/images/items/#{@item.item_image}", image.read) 22 redirect_to("/items/#{@item.post_id}/show") 23 else 24 render("/items/new") 25 end 26 end 27 28 def show 29 @item = Item.find_by(params[:id]) 30 @post = Post.find_by(id: params[:id]) 31 @items = @post.items 32 33 end 34 35 def edit 36 @item = Item.find_by(id: params[:id]) 37 end 38 39 def destroy 40 @item = Item.find(params[:id]) ←エラー箇所 41 @item.destroy 42 redirect_to("/posts/#{@post.id}") 43 end 44end
html
1vews/items/show.html.erb 2 3<div class="main posts-show"> 4 <div class="container"> 5 <div class="posts-show-item"> 6 <% @items.each do |item| %> 7 <tr> 8 <% if File.exist?("app/assets/images/items/#{item.id}.jpg") %> 9 <td><%= image_tag "items/#{item.id}" %></td> 10 <% else %> 11 <td><%= image_tag "no_image.png" %></td> 12 <% end %> 13 <tr> 14 <!--アイテム画像--> 15 <td></td> 16 </tr> 17 <tr> 18 <!--アイテム名--> 19 <td><%= item.products_name %></td> 20 </tr> 21 <tr> 22 <!--ブランド--> 23 <td><%= item.brand %></td> 24 </tr> 25 <tr> 26 <!--サイズ--> 27 <td><%= item.size %></td> 28 </tr> 29 <tr> 30 <!--価格--> 31 <td><%= item.price %></td> 32 </tr> 33 <% end %> 34 35 <div class="post-time"> 36 <%= @item.created_at.strftime("%Y-%m-%d") %> 37 </div> 38 <% if @post.user_id == @current_user.id %> 39 <div class="post-menus"> 40 <%= link_to("アイテム編集","/items/#{@post.id}/edit") %> 41 <%= link_to("アイテム削除", "/items/#{@item.post_id}/destroy", {method: "post"}) %> 42 </div> 43 <% end %> 44 <%= link_to("コーディネート画面へ戻る", "/posts/#{@post.id}") %> 45 </div> 46 </div> 47 <%= link_to("トップページへ", "/") %> 48</div>
このように記載し、vews/items/show.html.erbの
<%= link_to("アイテム削除", "/items/#{@item.post_id}/destroy", {method: "post"}) %>
このlinkを踏んだ際に出るエラーとなります。
今回はpost_idの159番を削除したいのですがカラムには番号が入っています。
postsのidとitemsのpost_idは紐付けています。
159番のアイテムを消去しようとするとidがないと、正常に削除できません。
何かアドバイスや原因などわかる方いらっしゃいましたらコメントいただけると幸いです、、
よろしくお願い致します。
show のcodeを載せてください
winterboum様
追記いたしました。よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー