我有一段时间没有noobie路由错误,但现在我正在使用命名空间我似乎不明白如何跟踪它们......
uninitialized constant ShiftedCommerce::BaseItemsController::Item
这究竟是什么意思?在我的命名空间中没有与BaseItemsController关联的Item模型吗?
我不知道为什么会有一个尾随::项目,我认为它不应该存在。
我觉得奇怪的另一个原因是因为如果我在BaseItemController中更改ANYTHING,页面将呈现一次。然后,如果我重新加载页面,同样的错误会重新出现。这非常令人沮丧。
这是我的BaseItemControlller
class ShiftedCommerce::BaseItemsController < ApplicationController
before_action :set_base_item, only: [:show, :edit, :update, :destroy]
# GET /items
# GET /items.json
def index
@base_items = BaseItem.all
@line_item = LineItem.new
@cart = current_cart
@title = "Store"
end
# GET /items/1
# GET /items/1.json
def show
@cart = current_cart
@line_item = LineItem.new
end
# GET /items/new
def new
@base_item = BaseItem.new
end
和我的模特......
class ShiftedCommerce::BaseItem < ActiveRecord::Base
has_many :line_items, :through => :items
has_many :items
has_many :sizes, :through => :items
has_many :colors, :through => :items
before_destroy :ensure_not_referenced_by_any_line_item
validates :price, :numericality => {:greater_than_or_equal_to => 0.01}
validates :title, :uniqueness => true
def one_record_of_variance
self
end
def has_no_variance
end
def is_base_item?
return true if self.class.name == "BaseItem"
end
def is_item?
return true if self.class.name == "Item"
end
private
# ensure that there are no line items referencing this product
def ensure_not_referenced_by_any_line_item
if line_items.empty?
return true
else
errors.add(:base, 'Line Items present')
return false
end
end
end
以下是我的路径:
App/controllers/shifted_commerce/base_items_controller.rb
App/models/shifted_commerce/models/base_item.rb