Я сталкиваюсь с этой ошибкой
param is missing or the value is empty: order
У меня Admin::OrdersController
и Clients::OrdersController
Из клиентской части пользователь создает свой заказ
Из административной части администратор может изменить статус заказа
Статус моей заявки устанавливается следующим образом в модели заказа:
enum status: [:pending, :paid, :sent, :cancelled, :refunded]
Чтобы обновить этот статус в моем admin / orders / show.html.erb
Я добавил форму:
<%= form_tag(@order , url: admin_order_path(@order) )do %>
<%= hidden_field_tag :status, 2 %>
<%= hidden_field_tag :sub_total, @order.sub_total %>
<%= hidden_field_tag :user_id, @order.user.id %>
<%= hidden_field_tag :token, @order.token %>
<%= submit_tag "Order sent" , class: "btn btn-success"%>
<% end %>
админ / orders_controller.rb
class Admin::OrdersController < ApplicationController
def index
@orders = Order.all
@orders = @orders.filter_by_status(params[:status]) if params[:status]
end
def show
@order = Order.find(params[:id])
end
def edit
@order = Order.find(params[:id])
end
def update
@order = Order.find(params[:id])
@order.update_attributes(order_params)
redirect_to @order
end
private
def order_params
params.require(:order).permit(:status, :user_id, :token , :sub_total)
end
end
параметры запроса:
Request
Parameters:
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"EmHbw3XMNr1hdhQKXGoMeoSQY82kxLty1M9pJZBHngJgnHY5T9I54gW+iwlww+v+WmmdSXSELLOeNRyCwIjgVQ==",
"status"=>"2",
"sub_total"=>"30",
"user_id"=>"1",
"token"=>"70717163067e1c9d",
"commit"=>"Order sent",
"id"=>"7"}
журналы
Started PATCH "/admin/orders/7" for 127.0.0.1 at 2019-01-07 16:19:43 +0100
[1m[36mUser Load (0.4ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2[0m [["id", 1], ["LIMIT", 1]]
↳ /Users/nellyduclos/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98
Processing by Admin::OrdersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"EmHbw3XMNr1hdhQKXGoMeoSQY82kxLty1M9pJZBHngJgnHY5T9I54gW+iwlww+v+WmmdSXSELLOeNRyCwIjgVQ==", "status"=>"2", "sub_total"=>"30", "user_id"=>"1", "token"=>"70717163067e1c9d", "commit"=>"Order sent", "id"=>"7"}
[1m[36mOrder Load (0.3ms)[0m [1m[34mSELECT "orders".* FROM "orders" WHERE "orders"."id" = $1 LIMIT $2[0m [["id", 7], ["LIMIT", 1]]
↳ app/controllers/admin/orders_controller.rb:17
Completed 400 Bad Request in 1ms (ActiveRecord: 0.3ms)
ActionController::ParameterMissing (param is missing or the value is empty: order):
app/controllers/admin/orders_controller.rb:25:in `order_params'
app/controllers/admin/orders_controller.rb:18:in `update'