質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

4676閲覧

【rails】form_for でのurlオプションの使い方についてのお尋ねいたします。

YousukeTanaka

総合スコア79

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/01/23 05:28

編集2018/01/23 05:30

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は同じ)になります。
以下のエラーもでており、別のサイトを参考にし、解決を試みましたが、うまくいかずご相談させていただきたい次第です。

イメージ説明

以上、何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ハッシュを使うと、引数名が合わないなどの問題が出る…ということでしたら、url: xxx_path(@reservation)のように、URLヘルパーを使ってフルにURLを生成してしまう方がスッキリする気もします。

ヘルパー名は、rake routeshttp://local-server/rails/info/routesなどで確認してください。

投稿2018/01/23 05:53

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YousukeTanaka

2018/01/23 05:54

早速のご回答ありがとうございます。早速試してみます。今回のご助言、非常にありがたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問