我在视图表中有一个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
我做错了什么?
答案 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?" %>
有点黑客,但它有效!