我的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'
任何帮助都会非常有帮助。
答案 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_path
或root_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