0

我的 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

4 回答 4

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.' }
于 2013-07-11T18:13:29.233 回答
1

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

于 2013-07-11T18:07:34.183 回答
0

我的猜测是它应该是admin_root_path或者只是root_path取决于你如何配置你的路线,但是如果你想查看所有可用的路线并确保你正在使用其中之一,你应该遵循@lflores 的建议。

于 2013-07-11T18:13:51.320 回答
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
于 2017-04-12T11:36:13.253 回答