获取要使用的表单: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是: