2013-07-11 50 views
0

我有我的rails代碼的問題,我嘗試基於輸入創建一個新的位置。 所以create方法是這樣的:未定義的本地變量或方法`admins_root_path'

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' 

任何幫助將是非常有益的。

+1

請張貼'耙的輸出routes' – vee

+0

列表你的路由文件PLZ。 –

回答

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.' } 
+0

謝謝,就是這樣! – Fry

1

該錯誤似乎與保存位置時傳遞的路由「admins_root_path」相同。在控制檯中,如果輸入rake routes,您將看到所有可用路線的列表。

0

我的猜測是,它應該是admin_root_path或只是root_path這取決於你如何配置你的路線,但如果你想看到所有可用的路線,並確保你使用其中的一個,你應該遵循@lflores的建議。

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 
相關問題