diff --git a/Gemfile b/Gemfile index 7a04e3a..de1445c 100644 --- a/Gemfile +++ b/Gemfile @@ -50,6 +50,7 @@ end group :development do # Use console on exceptions pages [https://github.com/rails/web-console] gem "web-console" + gem "pry" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 10050f4..49baf1d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -99,6 +99,7 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) + coderay (1.1.3) concurrent-ruby (1.3.5) connection_pool (2.5.4) crass (1.0.6) @@ -145,6 +146,7 @@ GEM net-smtp marcel (1.1.0) matrix (0.4.3) + method_source (1.1.0) mini_mime (1.1.5) minitest (5.26.2) msgpack (1.8.0) @@ -186,6 +188,9 @@ GEM actionpack (>= 7.0.0) activesupport (>= 7.0.0) rack + pry (0.15.2) + coderay (~> 1.1) + method_source (~> 1.0) psych (5.2.6) date stringio @@ -355,6 +360,7 @@ DEPENDENCIES importmap-rails jbuilder propshaft + pry puma (>= 5.0) rails (~> 8.1.0) rubocop-rails-omakase diff --git a/app/controllers/dashboard/orders_controller.rb b/app/controllers/dashboard/orders_controller.rb index 2c31bf5..a579cc7 100644 --- a/app/controllers/dashboard/orders_controller.rb +++ b/app/controllers/dashboard/orders_controller.rb @@ -11,11 +11,34 @@ def new name: reservation.name, user: Current.user ) + new_resources_setup + end + + def create + reservation = Reservation.find(params.dig(:order, :reservation_id)) + item = Item.find(params.dig(:order, :item_id)) + @order = Order.new(order_params(reservation, item)) + + if @order.save + redirect_to dashboard_orders_path, notice: '注文が作成されました' + else + new_resources_setup + # TODO: 画面でいい感じに表示されるようにする + flash.alert.now = @order.errors.full_messages + render :new, status: :unprocessable_entity + end + end + + private + + def new_resources_setup @items = Item.all.order(:name) @users = User.all.order(:name) end - def create - # Write Code Here + def order_params(reservation, item) + params.require(:order) + .permit(:reservation_id, :user_id, :item_id, :email, :name, :item_id) + .merge(name: item.name, email: reservation.email) end end