创建表单以删除资源

Tar*_*her 0 ruby-on-rails

我有一个订阅者资源(邮件列表),并想要取消订阅表单.我用表单创建了一个删除视图

<%= form_for(Subscriber.new, :action => :delete) do  %>   
 email: <%= text_field_tag :mail %>   
 <%= submit_tag "Sign out" %> 
<% end %>
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*nne 8

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

你可以使用这样的路线解决这个问题:

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

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