我的rails应用程序遇到了一些问题。我检查了这个错误的其他问题,但没有一个适用于我的应用程序。
我需要摧毁一行,为此我将表格指向行动“摧毁”。在我的控制器内。
这是我指导的地方。
<%= form_for(:pallet_hist, :url => {:action => 'destroy', :id => params[:id]}) do |f| %>
这是控制器内的动作。
class PalletHistController < ApplicationController
def destroy
@pallet_hist = PalletHist.find(params[:id]).destroy
flash[:notice] = "Entry '#{pallet_hist.id}' deleted successfully"
redirect_to(:action => 'index', :id => @pallet_hist.pallet_id)
end
end
我无法弄清楚为什么它还在给我这个错误。
的routes.rb
Rails.application.routes.draw do
match ':controller(/:action(/:id))', :via => [:get, :post]
root 'pallets#index'
end
答案 0 :(得分:1)
对于销毁操作,您希望在路由中使用delete
HTTP方法。因此,对于自定义路线(如果您未使用resources
生成一组路线),它将类似于:
delete 'my_url', to: 'mycontroller#my_delete_action'
如果您使用resources
,它会为您提供索引,显示,新建,创建,编辑,更新和销毁路线。
另外,如果你的:url => {:action => 'destroy', :id => params[:id]}
有效,我会感到惊讶。 url:
选项应该包含销毁操作的网址。因此,如果您执行了我上面提到的自定义路线,则网址会更接近mycontroller_path
,然后应该有method: :delete
。在最后一部分我可能是错的,但我想如果我正确的话,我会提供额外的信息。
编辑:
如果您只需要一个删除按钮,那么您可能不想为此创建表单。你最好使用链接。所以这就像是:
<%= link_to 'Delete', mycontroller_path(object_to_destroy), method: :delete %>
我希望这会有所帮助。
答案 1 :(得分:0)
您需要将destroy
操作添加到路线中。
添加以下行:resources :pallet_hists
将config/routes.rb
解决问题。这将添加所有路线(update
,index
,create
.. )。
如果您只想添加resources :pallet_hists, only: :destroy
路线,则可以使用destroy
。