rails初心者です。現在、controllerのcreate処理を行っていますが、表題の件で質問したいことがあり投稿いたします。よろしくお願いいたします。
現在の問題点
以下の画像の4と5レコード目のlisting_idカラムに値が入っていない状況を改善したい。
質問したいポイント(3点)
①strong parameterに 「listing_id」 を入れるだけでは、DBへの登録はされないのか? 他に、どのような可能性があるのか? ②以下で、@listing = Listing.find(params[:listing_id])とかいた場合、Listingsモデルの中には、listing_idというカラムは存在してない。しかし、binding.pryで確認したところ、値がとれていた。これはどうしてか? ③現在は消しているが、 @reservation = @listing.reservations.find(params[:id]) を書くと、idがないということでエラーが起きる。かつ、最終的に listing_reservation_path(@listing, @reservation) のページに遷移したい。これはこのままで遷移するのだが、pathに@reservationを指定してreservation.idを指定しているのに@reservationを書かない方が画面遷移する。これはどうしてか?
controllerのコード
def create # 自分のリスティングを自分で予約するときの処理(listings/calendar.htm.erb) @listing = Listing.find(params[:listing_id]) # @reservation = @listing.reservations.find(params[:id]) @reservation = current_user.reservations.create(reservation_params) redirect_to listing_reservation_path(@listing, @reservation), notice:"予約確認へ進みます。" end private def reservation_params params.require(:reservation).permit(:listing_id, :start_date, :reservation_time, :reservation_message, :price_setting, :total_price) end
以上、何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。