[WEBアプリケーション]管理者側のユーザーの注文履歴編集について
解決したいこと
ユーザーが商品のを注文できるWEBアプリケーションを作っています。
その中で管理者側から見たユーザーの注文履歴の更新昨日の実装中にエラーが発生しました。
解決方法を教えて頂きたいです。
発生している問題・エラー
NameError in Admin::OrderDetailsController#update
undefined local variable or method `ordering_detail_params' for #<Admin::OrderDetailsController:0x000000054717d8>
Did you mean?
ordering_detail
該当するソースコード
*/controllers/admin/order_details_controller.rb
class Admin::OrderDetailsController < ApplicationController
def update
ordering_detail=OrderingDetail.find(params[:id])
ordering_detail.update(ordering_detail_params)
redirect_to admin_order_path(ordering_detail.id)
end
private
def ordering_detail
params.require(:ordering_detail).permit(:making_status)
end
end
*/views/admin/orders/show.html.erb
html.erb
<% @ordering_details.each do |ordering_detail| %>
<tbody>
<tr>
<td><%= ordering_detail.item.name %></td>
<td><%= ordering_detail.item.add_tax_price.to_s(:delimited, delimiter: ',') %></td>
<td><%= ordering_detail.amount %></td>
<td><%= (ordering_detail.item.add_tax_price)*(ordering_detail.amount) %></td>
<%= form_with model: ordering_detail, url: admin_path(ordering_detail), method: :patch do |f| %>
<td>
<%= f.select:making_status, OrderingDetail.making_statuses_i18n.invert,{} %><!--invertでkeyとvalueを入れ替える。{}はmaiking_statusesの中身を指す-->
<%= f.submit "更新", class:" btn btn-success" %>
</td>
<% end %>
</tr>
</tbody>
<% end %>
*/config/routes.rb
namespace :admin do
get 'homes/top'
get 'admin' => 'homes#top'
post 'homes/top' => 'homes#top'#管理者ログイン時に通るパス
patch 'ordering_details/:id' => "order_details#update"
resources :customers, only: [:index, :show, :edit, :update]
resources :genres, only: [:index, :edit, :create, :update]
resources :items, only: [:index, :new, :show, :edit, :create, :update]
resources :orders, only: [:show, :create]
end
*ターミナル
3: def update
4: ordering_detail=OrderingDetail.find(params[:id])
5: byebug
=> 6: ordering_detail.update(ordering_detail_params)
7: redirect_to admin_order_path(ordering_detail.id)
8: end
9:
10: private
(byebug) params
#<ActionController::Parameters {"_method"=>"patch", "authenticity_token"=>"R1_FaElws81G8gLkVNID_95Ag25KA-pea6EGz7qwN8-ivQND682uOnP1G5ITD0eXv8QYAah1Y7W2x5NwVtOQAQ", "ordering_detail"=>{"making_status"=>"cannot"}, "commit"=>"更新", "controller"=>"admin/order_details", "action"=>"update", "id"=>"1"} permitted: false>
(byebug) ordering_detail
#<OrderingDetail id: 1, price: 3000, amount: 1, order_id: 1, item_id: 1, making_status: nil, created_at: "2022-03-30 02:10:05.896386000 +0000", updated_at: "2022-03-30 02:10:05.896386000 +0000">
自分で試したこと
ordeling_detailに対してのNameErrorが出ているのでコントローラ内のアクションや下のparamsの記述を確認したのですがわかりませんでした。
関係がないかもしれませんがbyebugで何かわかるかと思って試したりしました。
説明の至らない部分もあるかと思いますがよろしくお願いします。
0 likes