创建表单以删除资源

时间:2010-11-18 16:38:39

标签: ruby-on-rails

我有一个订阅者资源(邮件列表),并希望制作取消订阅表单。我创建了一个带有表单

的删除视图
<%= form_for(Subscriber.new, :action => :delete) do  %>   
 email: <%= text_field_tag :mail %>   
 <%= submit_tag "Sign out" %> 
<% end %>

我尝试调用控制器的delete方法,而是调用编辑操作。

2 个答案:

答案 0 :(得分:8)

问题是,针对destroy动作的RESTful路由需要:要删除的资源的id,并且由于您使用Subscriber.new作为创建表单的源,因此无法创建适当的URL来发布。 / p>

您可以使用以下路线解决此问题:

<% form_for(:subscriber, :url => subscriber_path("email"), :html => {:method => :delete}) do  %>
  email: <%= text_field_tag :mail %>
  <%= submit_tag "Sign out" %>
<% end %>

请注意,您必须将subscriber_path编辑为您自己的路由,但是通过使用“email”作为标识符,您可以确保没有faulthy:id传递给控制器​​,您可以使用该电子邮件找到要销毁的正确模型因为我认为你想做的事。

答案 1 :(得分:2)

<%= form_for @subscriber, :method => :delete do  %>   
  email: <%= text_field_tag :mail %>   
  <%= submit_tag "Sign out" %> 
<% end %>

这应该可以解决问题。