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 %>
因此,每次他们单击 plus
或 minus
时,都会向 OrderItems 控制器发送一个 patch
调用:
def update
#do some logic
respond_to do |format|
format.js
format.html { redirect_to new_charge_path }
end
end
在控制器中我们做了一些逻辑,我不希望页面刷新,而是使用 JavaScript 使数字上升或下降。我想使用 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 %>
像这样将 plus
和 minus
传递给控制器:
{"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 %>
我正在尝试使用 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 %>
因此,每次他们单击 plus
或 minus
时,都会向 OrderItems 控制器发送一个 patch
调用:
def update
#do some logic
respond_to do |format|
format.js
format.html { redirect_to new_charge_path }
end
end
在控制器中我们做了一些逻辑,我不希望页面刷新,而是使用 JavaScript 使数字上升或下降。我想使用 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 %>
像这样将 plus
和 minus
传递给控制器:
{"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 %>