1

我在视图表中有一个 button_to 辅助方法,我无法按照我需要的方式工作。我正在使用它来删除与构建表不同的模型中的记录,并且我没有 :id for 但我确实有其他参数可以找到正确的记录。基于此处的其他问题,我认为以下语法应该是正确的;

<%= button_to 'Remove',mailing_list_edit_path(:arg1 => "value1", :arg2 => "value2"),:method => :delete,:confirm => "are you sure?" %>

但是当我单击按钮时出现此错误;

Routing Error
No route matches [DELETE] "/assets"
Try running rake routes for more information on available routes. 

这是我的 routes.rb 中的条目

resources :mailing_list_edits, only: [:create, :destroy]

我的控制器中的动作

def destroy
MailingListEdit.where(:att1 => params[:arg1], :att2 => params[:arg2]).delete_all
respond_to do |format|
format.html { redirect_to controller1_index_path(session[:remember_token]) }
end
end

我究竟做错了什么?

4

2 回答 2

3

我认为您不会将要销毁的对象提供给您的链接。实际上 ressources 构建的 destroy 方法是一个成员路由:它需要对象来销毁。

举个例子: <%= button_to 'Remove',mailing_list_edit_path(@object_to_destroy, :arg1 => "value1", :arg2 => "value2"),:method => :delete,:confirm => "are you sure?" %>

于 2012-04-27T14:06:39.733 回答
1

我找到了一种解决方法,以防它对其他人有所帮助,就在这里。

如果没有 :id,路径助手将无法工作,因此我包含了一个虚拟 :id,现在我能够传递我需要查找和销毁的两个属性。所以我的 button_to 现在看起来像这样;

<%= button_to 'Remove',mailing_list_edit_path(:id => "foobar", :arg1 => "value1", :arg2 => "value2"),:method => :delete,:confirm => "are you sure?" %>

有点黑客,但它的工作原理!

于 2012-04-30T17:57:48.450 回答