button_to无法正常工作

时间:2012-04-27 13:44:50

标签: ruby-on-rails ruby-on-rails-3

我在视图表中有一个button_to帮助器方法,我无法以我需要的方式工作。我使用它删除不同模型中的记录而不是构建表,我没有:id但我确实有其他参数可以找到正确的记录。根据其他问题,我认为以下sytax应该是正确的;

<%= 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

我做错了什么?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

我找到了一个解决方法,万一它可以帮助别人,就在这里。

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

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

有点黑客,但它有效!