我有一个编辑和更新方法,如下:
cmdbs_controller.rb
def edit
@evm = Evm.find(params[:id])
end
def update
@evm = Evm.find(params[:id])
if @evm.update(evm_params)
redirect_to @evm
else
render 'edit'
end
end和路由如下:
resources :cmdbs do
get :autocomplete_client_name, :on => :collection
collection do
get 'test'
end
end问题是我在提交我的编辑时收到一个错误:
undefined method `evm_url' for #<CmdbsController:0x007fb33ac47d00>并将我指向redirect_to @evm行。顺便说一句,我使用的是patch,我的url看起来像这样:
http://localhost:3000/cmdbs/1发布于 2015-06-07 00:16:19
redirect_to @evm这一行将转换为redirect_to evm_path(@evm.id)。它使用evm_path,因为@evm的类是Evm。因此,它希望在路由中有像resources :evms这样的东西。这意味着您必须有另一个名为EvmsController的控制器。执行redirect_to @evm操作基本上会重定向到EvmsController的show操作。我不确定这是否是您希望发生的事情,但这就是Rails正在尝试做的事情。如果路由文件中没有任何其他内容,Rails就不知道重定向到哪里。
https://stackoverflow.com/questions/30684535
复制相似问题