500 Internal Server Error

环境: ruby1.8.7, rails 2.2.2

 

在联系Depot的是时候,不小心把CartItem的文件名写成 CartItem.rb,结果运行的时候就回报500 Internal Server Error这样的错误,将其文件名应该为cart_item.rb, 问题解决了

 

之所以出现这个问题,是因为文件的命名没有遵守rails的命名规范

 

通常情况下,Ruby 代码中引用以上那些文件中的class 和module 必须使用require 来包括ruby 的源文件。因为Rails知道这些文件名,类名之间的关系。所以require 语句在Rails 里是没有必要的。相反,当你第一次引用Rails 不知道的类或模块时,Rails 使用命名约定来转换类名字为文件名,并试图在幕后加载这个文件。这样的好处是不言而喻的,你可以直接引用model 类名,这个model 将自动加载到你的应用程序中。

 

 

class Cart
  attr_reader :items

  def initialize
    @items = []
  end

  def add_product(product)
    current_item = @items.find { |item| item.product == product}
    if current_item
      current_item.increment_quantity
    else
      @items << CartItem.new(product)
    end
  end
end

 

程序中中调用CartItem.new 的时候,rails就会自动的去加载 cart_item.rb 的文件

你可能感兴趣的:(REST,Rails,rails规范)