前提・実現したいこと
空のコメントを送信してしまっても画面が切り替わらないようにしたい(URLがそのまま)
発生している問題・エラーメッセージ
空のメッセージを送信するとルーティング通りにURLが変わるが変わってしまった場合2回以上空のメッセージを送信してブラウザの戻るボタンを押すとルーティングエラーになる。
挙動
初めのビュー(詳細ページ)
空のコメントを投稿した場合(charterコントローラーで並べ替えと最初のデータしか表示されないようにしたが、
URLが変わったことで表示されてしまう)
error
1Routing Error 2No route matches [GET] "/charters/3/sells"
該当のソースコード
sell_controller.rb
ruby
1class SellsController < ApplicationController 2 def create 3 @sell = Sell.new(sell_params) 4 if @sell.save 5 redirect_to charter_path(@sell.charter) 6 else 7 @charter = @sell.charter 8 @sells = @charter.sells 9 render "charters/show" 10 end 11 end 12 private 13 def sell_params 14 params.require(:sell).permit(:sell).merge(user_id: current_user.id, charter_id: params[:charter_id]) 15 end 16end
charter_controllser.rb
ruby
1 def show 2 @charter = Charter.find(params[:id]) 3 @sell = Sell.new 4 @sells = @charter.sells.order(sell: :asc).first(1) 5 end
charters/show.html.erb
html
1<div class="charter-show-left"> 2 <div class="price-input"> 3 <% if user_signed_in? %> 4 <%= form_with(model: [@charter, @sell], local: true) do |form| %> 5 <%= form.text_area :sell, placeholder: "コメントする"%> 6 <%= form.submit "SEND" %> 7 <% end %> 8 <% else %> 9 <strong><p>※※※ コメントの投稿には新規登録/ログインが必要です ※※※</p></strong> 10 <% end %> 11 </div> 12 <h6>価格一覧</h6> 13 <ul class="price-row"> 14 <% @sells.each do |sell|%> 15 <li class="price-lists"> 16 <%= link_to "#{sell.sell}円", "/users/#{sell.user_id}", id: "price", class: "price-list" %> 17 <%= link_to "削除", "/charters/#{@charter.id}/sells/#{sell.id}", method: :delete %> 18 <%= link_to "購入へ", charter_purchases_path(@charter.id)%> 19 </li> 20 <% end %> 21 </ul> 22</div>
試したこと
HTMLのform_withでurlを指定してみましたが、別のルーティングエラーになりました。
補足情報(FW/ツールのバージョンなど)
ruby 2.6.5
rails 6.0.3
あなたの回答
tips
プレビュー