undefined局部变量或方法`admins_root_path'

时间:2013-07-11 17:45:09

标签: ruby-on-rails ruby

我的rails代码有问题,我尝试根据输入创建一个新位置。 所以create方法如下所示:

  def create
    @location = Location.new(params[:location])

    respond_to do |format|
      if @location.save
        # format.html { redirect_to @location, notice: 'Location was successfully created.' }
        format.html { redirect_to admins_root_path, notice: 'Location was successfully created.' }
        format.json { render json: @location, status: :created, location: @location }
      else
        format.html { render action: "new" }
        format.json { render json: @location.errors, status: :unprocessable_entity }
      end
    end
  end

最终会出现以下错误输出:

undefined local variable or method `admins_root_path' for #<LocationsController:0x007fa18917f278>
app/controllers/locations_controller.rb:47:in `block in create'
app/controllers/locations_controller.rb:45:in `create'

任何帮助都会非常有帮助。

4 个答案:

答案 0 :(得分:1)

错误似乎与保存位置时传递的路线'admins_root_path'有关。在控制台中,如果您键入rake routes,您将看到所有可用路径的列表。

答案 1 :(得分:1)

admins_root_path没有已定义的路线。以下将为其定义命名匹配路由:

match 'path/to/admin/root' => 'admins#root_action', :as => 'admins_root'

然而,很可能你只是在调用错误的路线。例如,您可能尝试路由到admins#index操作,在这种情况下,您将执行以下操作:

format.html { redirect_to admins_path, notice: 'Location was successfully created.' }

答案 2 :(得分:0)

我的猜测是,它应该是admin_root_pathroot_path,具体取决于您如何配置路线,但如果您想查看所有可用路线并确保使用一条路线他们应该遵循@lflores的建议。

答案 3 :(得分:0)

我也遇到了这个问题 我查了一下:routes.rb,有问题。我还没写:资源。我添加资源,解决了问题。

我的错误代码:

Rails.application.routes.draw do 
  namespace :admin do

  end
  resources :jobs
  root 'jobs#index'
end

我的正确代码

Rails.application.routes.draw do
  namespace :admin do
  resources :jobs
  end
  resources :jobs
  root 'jobs#index'
end