前提・実現したいこと
Railsで商品予約システムを作成しています。
予約の日付と時刻をそれぞれf.date_selectとf.time_selectでDBに保存したいのですが、うまくいきません
該当のソースコード
views/order/new.html.haml
= form_with(model: @order, local: true) do |f| %ul.reservation-form %li.reservation-form__list .label = f.label :date, 'ご予約日' .form = f.date_select :date, {include_blank: true, discard_year: true, use_month_numbers: true}, {class: 'time-box'} %li.reservation-form__list .label = f.label :receiving_method, 'お受取方法' .form = f.select :receiving_method, Order.receiving_methods_i18n.invert, {prompt: '---'}, {class: 'select-box'} %li.reservation-form__list .label = f.label :receiving_store, 'お受取店舗' .form = f.select :receiving_store, Order.receiving_stores_i18n.invert, {prompt: '---'}, {class: 'select-box'} %li.reservation-form__list .label = f.label :time, 'お受取時間' .form = f.time_select :time, {include_blank: true, start_hour: 10, end_hour: 20, minute_step: 15}, {class: 'time-box'}
orders_controller.rb
class OrdersController < ApplicationController def new @order = Order.new end def create @order = Order.new(order_params) //ここでbinding.pryを試しました if @order.save redirect_to root_path else render :new end end private def order_params params.require(:order).permit(:'date(1i)', :'date(2i)', :'date(3i)', :'time(1i)', :'time(2i)', :'time(3i)', :'time(4i)', :'time(5i)', :receiving_method, :receiving_store, :delivery_address, :payment, :voucher, :message) end end
ordersテーブル作成時のマイグレーションファイル
class CreateOrders < ActiveRecord::Migration[5.2] def change create_table :orders do |t| t.date :date, null: false t.time :time, null: false t.integer :receiving_method, null: false t.integer :receiving_store t.string :delivery_address t.integer :payment, null: false t.integer :voucher t.text :message t.timestamps end end end
試したこと
元々ストロングパラメーターの中身を、カラムと合わせて:date,:timeと記述していました。
binding.pryでデバックしたところparamsが上のようになっていたので、
これだと許可されないと思い、変更しました。
[3] pry(#<OrdersController>)> @order.date => Mon, 04 Apr 0001 [4] pry(#<OrdersController>)> @order.time => Mon, 01 Jan 0001 11:15:00 UTC +00:00
変更後にもう一度デバックしたところこのようになったので、値は取得できていると思いますが
そこからDBに保存するのがうまくいきません。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/27 07:52