我有一个编辑和更新方法如下:
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行。 顺便说一句,我正在使用补丁,我的网址看起来像这样:
http://localhost:3000/cmdbs/1
答案 0 :(得分:2)
redirect_to @evm
行转换为redirect_to evm_path(@evm.id)
。它使用evm_path
,因为@evm
的类是Evm
。因此,期望在路线中有resources :evms
之类的东西。这意味着您必须拥有另一个名为EvmsController
的控制器。执行redirect_to @evm
基本上会重定向到EvmsController
的show动作。我不确定这是否是您想要发生的事情,但这就是Rails正在尝试做的事情。在您的路线文件中没有任何其他内容时,Rails不知道重定向的位置。