未定义的方法`evm_url'

时间:2015-06-06 15:26:06

标签: ruby-on-rails ruby-on-rails-4

我有一个编辑和更新方法如下:

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

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不知道重定向的位置。