未初始化的常数 - 控制器内的模型

Ste*_*ose 3 routes ruby-on-rails actioncontroller

我有一个俱乐部有多个位置的应用程序.俱乐部及其位置只能在管理员命名空间内编辑.

我正在尝试将俱乐部预加载到控制器中,以便所有操作仅处理该俱乐部.

路线是嵌套的; 但是,在位置控制器中,它找不到Club模型.我究竟做错了什么?

的routes.rb

namespace :admin do
  resources :clubs do
    resources :locations
  end
end
Run Code Online (Sandbox Code Playgroud)

club.rb

class Club < ActiveRecord::Base
  belongs_to :membership
  has_many :users
  has_many :locations
  #accepts_nested_attributes_for :locations
end
Run Code Online (Sandbox Code Playgroud)

管理员/ locations_controller.rb

class Admin::LocationsController < ApplicationController
  before_filter :load_club

  protected 

  def load_club
    @club = Club.find(params[:club_id])
  end
end
Run Code Online (Sandbox Code Playgroud)

另外,最后:我的路线有什么问题,它没有在管理员/俱乐部/位置寻找位置控制器?我不确定这是否是问题的一部分.

来自耙路线

    admin_club_locations POST   /admin/clubs/:club_id/locations(.:format)          admin/locations#create
 new_admin_club_location GET    /admin/clubs/:club_id/locations/new(.:format)      admin/locations#new
edit_admin_club_location GET    /admin/clubs/:club_id/locations/:id/edit(.:format) admin/locations#edit
     admin_club_location PUT    /admin/clubs/:club_id/locations/:id(.:format)      admin/locations#update
                         DELETE /admin/clubs/:club_id/locations/:id(.:format)      admin/locations#destroy
Run Code Online (Sandbox Code Playgroud)

vis*_*ise 9

它可能会Club在当前Admin命名空间中查找模型.你可以尝试:

def load_club
  @club = ::Club.find(params[:club_id])
end
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是模型的命名空间问题.谢谢!我在创建问题后立即想出来了.>> (2认同)