命名空间控制器中未初始化的常量

时间:2014-11-15 00:05:34

标签: ruby-on-rails ruby-on-rails-4 namespaces

我有一段时间没有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

0 个答案:

没有答案