簡體   English   中英

Rails - Ajax:ActionController::UnknownFormat

[英]Rails - Ajax: ActionController::UnknownFormat

我正在嘗試使用 RoR 構建電子商務網站。 我有這樣的邏輯,用戶可以為他們想要購買的產品添加更多或更少的數量:

<%= link_to order_item_path(item, 'minus'), remote: true, method: :patch do %>
  <button>-</button>
<%end %>
<%= item.quantity %>
<%= link_to order_item_path(item, 'plus'), remote: true, method: :patch do %>
 <button>+</button>
<%end %>

因此,每次他們單擊plusminus時,都會向 OrderItems controller 發送patch調用:

def update
 #do some logic
 respond_to do |format|
   format.js 
   format.html { redirect_to new_charge_path }
 end
end

在 controller 中,我們做了一些邏輯,我不希望頁面刷新,而是使用 JavaScript 來使數字 go 向上或向下。 我想使用js.erb來做到這一點:

#order_items/update.js.erb

console.log("plus minus") 
#here make number go up or down

問題是,當用戶單擊加號或減號按鈕時,出現錯誤:

ActionController::UnknownFormat in OrderItemsController#update
respond_to do |format|
 format.js 
 format.html { redirect_to new_charge_path }
end

日志顯示:

#it does all the logic of the `update` method and when it arrives to the `respond_to` it gives the following:
web_1  | Completed 406 Not Acceptable in 322ms (ActiveRecord: 47.4ms | Allocations: 32091)
web_1  | 
web_1  | 
web_1  |   
web_1  | ActionController::UnknownFormat (ActionController::UnknownFormat):
web_1  |   
web_1  | app/controllers/order_items_controller.rb:44:in `update'

任何人都知道為什么會這樣,我該如何解決? 謝謝!

解決了!

所以這:

<%= link_to order_item_path(item, 'minus'), remote: true, method: :patch do %>
  <button>-</button>
<%end %>
<%= item.quantity %>
<%= link_to order_item_path(item, 'plus'), remote: true, method: :patch do %>
 <button>+</button>
<%end %>

像這樣將plusminus傳遞給 controller:

{"id"=>"90", "format"=>"plus"}

我猜參數上的format與這里的format沖突:

ActionController::UnknownFormat in OrderItemsController#update
respond_to do |format|
 format.js 
 format.html { redirect_to new_charge_path }
end

所以我只是將其更改為:

<%= link_to order_item_path(item, operator: 'minus'), remote: true, method: :patch do %>
 <button>-</button>
<%end %>
<%= item.quantity %>
<%= link_to order_item_path(item, operator: 'plus'), remote: true, method: :patch do %>
 <button>+</button>
<%end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM