Rails初心者となります。どうぞ宜しくお願い致します。
やりたいこと
現在、予約機能を作成しており、それに関連して、コミュニケーションの機能を作成しています。つまり、"enum"を使って、 「予約する側」と「予約される側」で、予約状況を変更しています。 現在、予約のキャンセルボタンを作成し、そのボタンを押したら、以下のbooking_cancelにステータスが変更されるようにしたいと考えています。
enum status: { booking_cancel: 0, =>キャンセルした時のstatus offer: 1, =>予約をofferした時のstatus booked: 2, =>予約が成立した時のstatus undone: 3, =>予約が不成立の場合のstatus offered: 4, =>予約を受けた場合のstatus booking_approval: 5, =>予約を承認した場合のstatus booking_rejection: 6, =>予約を拒否した場合のstatus booking_unapproved: 7 =>予約が未承認の場合のstatus }
現在の問題点
form_forでcontrollerのbooking_cancelアクションに飛ばし、そこでステータスを変更したいと考えていますが、
booking_cancelアクションに飛ばないという問題があります。
おそらく問題となるコード
<!-- DBの更新 --> <%= form_for [@listing, @reservation], :url => {:controller => 'reservations', :action => 'booking_cancel'} do |f| %> <div class="col-md-6 col-sm-6 text-center"> <button class="btn btn btn-lg btn-danger btn-block btn-wide btn-show"> <%= f.submit "予約を取り消す", class:"btn-booking_cancel" %><br> </button> </div> <% end %>
controller
def booking_cancel @listing = Listing.find(params[:listing_id]) @reservation = @listing.reservations.find_by(params[:reservation_id]).update!(status: :booking_cancel) if @reservation.booking_cancel? redirect_to listing_path(@listing), notice: 'ご予約は取り消されました。' end end
上記のコードで飛ぶactionは別の名前のaction(controllerは同じ)になります。
以下のエラーもでており、別のサイトを参考にし、解決を試みましたが、うまくいかずご相談させていただきたい次第です。
以上、何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/23 05:54