获取要使用的表单:method =>:delete(rails)
我有一个包含许多line_items的购物车。 我希望每个订单项旁边都有一个“删除”按钮,点击该按钮后会从购物车中删除line_item。
我知道我可以使用button_to方法执行此操作,但我想使用form_for,因为我想同时更改line_item的父对象的属性(每个line_item也属于一个课程,我会喜欢告诉课程的父母,它不再在购物车中)。
这是我使用form_for的代码:
:delete, :remote => true) do |f| %> "Delete" %>
ruby文档说只需添加:method =>:delete应该可以工作(http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for),但渲染的html不是完全正确。 它仍然是
但它应该是:
我究竟做错了什么?
Mark Needham有一篇博客文章 ,讲述了为什么:method => delete
form_for
中的:method => delete
不起作用。 他说
事实certificate,’form_for’期望’:method’作为右手大多数参数的一部分提供,作为带有键’:html’的哈希的一部分。
所以你需要改变你的代码:
<%= form_for(line_item, :method => :delete, :remote => true) do |f| %>
至:
<%= form_for(line_item, :html => { :method => :delete, :remote => true }) do |f| %>
我在Rails 3.0应用程序中尝试过,生成的HTML是: