現在クチコミ投稿機能を作成していて、
No.1のクチコミの編集のリンクを押すと下記のようにNo.3の投稿データを取得してしまいます。
また、新しい投稿をするとその新しい投稿のIDを取得してどれを押しても最新のIDの投稿(上記の写真だとNo.3)にしか飛べず、一旦リロードをしてリンクを押すと配列で一番最初のID(上記の写真だとNo.1)の投稿を取得してきてどの投稿を押しても配列で一番最初の投稿しか編集できなくなってしまいます。
削除リンクを押しても同様の現象が発生してしまっています。
エラーが発生しない為原因が掴めないためアドバイスいただけるとありがたいです。
controller
1class WomsController < ApplicationController 2 before_action :set_store, only: [:edit, :new, :create, :update] 3 before_action :correct_wom, only: [:destroy] 4 before_action :set_wom, only: [:edit, :update, :destroy] 5 before_action :set_favorite 6 before_action :set_item 7 8 def index 9 @wom = Wom.find_by(params[:id]) 10 @store = Store.find(params[:store_id]) 11 end 12 13 def new 14 @wom = Wom.new 15 end 16 17 def create 18 @wom = current_user.woms.build(wom_params) 19 if @wom.save 20 render 'woms/index' 21 elsif @wom.title.length >= 50 && @wom.content.length >= 140 22 flash.now[:alert] = "タイトルは50字,クチコミは140字以内で入力してください" 23 render 'woms/new' 24 elsif @wom.content.length >= 140 25 flash.now[:alert] = "クチコミは140字以内で入力してください" 26 render 'woms/new' 27 elsif @wom.title.length >= 50 28 flash.now[:alert] = "タイトルは50字以内で入力してください" 29 render 'woms/new' 30 end 31 @wom.user_id = current_user.id 32 end 33 34 def edit 35 end 36 37 def update 38 if @wom.update(update_params) 39 redirect_to store_woms_path 40 elsif @wom.title.length >= 50 && @wom.content.length >= 140 41 flash.now[:alert] = "タイトルは50字,クチコミは140字以内で入力してください" 42 render 'woms/edit' 43 elsif @wom.content.length >= 140 44 flash.now[:alert] = "クチコミは140字以内で入力してください" 45 render 'woms/edit' 46 elsif @wom.title.length >= 50 47 flash.now[:alert] = "タイトルは50字以内で入力してください" 48 render 'woms/edit' 49 end 50 end 51 52 def destroy 53 @wom.destroy 54 redirect_to store_woms_path 55 end 56 57 private 58 59 def wom_params 60 params.require(:wom).permit(:store_id, :title, :content, :visit_date) 61 end 62 63 def set_wom 64 @wom = Wom.find(params[:id]) 65 end 66 67 def set_store 68 @store = Store.find(params[:store_id]) 69 end 70 71 def correct_wom 72 @wom = Wom.find(params[:id]) 73 redirect_to root_url if @wom.nil? 74 end 75 76 def update_params 77 params.require(:wom).permit(:store_id, :title, :content) 78 end 79 80 def set_favorite 81 if user_signed_in? 82 @favorite = Favorite.find_by(store_id: params[:store_id], user_id: current_user.id) 83 end 84 end 85 86 def set_item 87 @item = Item.find_by(params[:item_id]) 88 end 89end
HTML
1<%= provide(:title, 'クチコミ') %> 2<%= render 'layouts/link_nabvar' %> 3<div class="wom-link"> 4 <% if user_signed_in? %> 5 <%= link_to 'クチコミを投稿する', new_store_wom_path(@store.id), class: 'btn btn-success' %> 6 <% else %> 7 <%= link_to 'クチコミを投稿する', new_user_session_path, class: 'btn btn-success' %> 8 <% end %> 9</div> 10<% if @store.woms.present? %> 11 <% @store.woms.each do |w| %> 12 <div class="wom-area"> 13 <span><%= link_to "削除", store_wom_path(@store, @wom), method: :delete, class: "wom-delete" %></span> 14 <span><%= link_to "編集", edit_store_wom_path(@store, @wom), class: "wom-update" %></span> 15 <h1 class="wom-list"><%= w.title %></h1> 16 <div class="wom-list"><%= w.content %></div> 17 </div> 18 <% end %> 19<% else %> 20 <h1 class="not-wom-message">まだクチコミはありません</h1> 21<% end %>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/12 10:56