我是Ruby on Rails的新手,使用rails 3.2.13和ruby 1.9.3p392。我正在嘗試構建一個應用程序使用的引擎,這可能會導致我的困惑。ruby on rails引擎undefined方法'delete'for nil:NilClass
引擎名稱是sales_app。我有一個頁面將一堆數據發佈到sales_app/sales#create來創建Sale。在銷售控制器的創建操作中,我會進行一些數據處理並嘗試實例化一個Sale對象。除了從模型創建對象外,我還得到一個NoMethodError異常,用於刪除方法,我甚至不知道我打電話給。請幫忙。
這裏是相關的細節。我的銷售/新頁的帖子下面的參數來銷售#創建:
{"sale"=>{"name"=>"Test",
"desc"=>"This is a test",
"start_date"=>"05/30/2013",
"end_date"=>"05/31/2013",
"start_time"=>"07:00",
"end_time"=>"08:00",
"products"=>""},
"create"=>"Create Sale"}
銷售控制器有其創建下列行動:
def create
if params[:create] == "Create Sale"
# process the data - add a start and end to params
#format = "%m/%d/%Y %H:%M:%S"
params[:sale][:start] = DateTime.strptime("#{params[:sale][:start_date]} #{params[:sale][:start_time]}:00", '%m/%d/%Y %H:%M:%S')
params[:sale][:end] = DateTime.strptime("#{params[:sale][:end_date]} #{params[:sale][:end_time]}:00", '%m/%d/%Y %H:%M:%S')
@sale = Sale.new(:name => params[:sale][:name], :desc => params[:sale][:desc], :start => params[:sale][:start], :end => params[:sale][:end])
if @sale.save
redirect_to @sale
else
render 'new'
end
else
render '/sales_app/static_pages/home'
end
end
日期東西是用於轉換日期和時間到一個單一的日期時間,我認爲這是工作。該銷售模式本身看起來如下(我甚至不知道爲什麼一些這方面是這樣):
module SalesApp
class Sale < ActiveRecord::Base
attr_accessible :desc, :end, :name, :start
def initialize(attributes = {})
@name = attributes[:name]
@desc = attributes[:desc]
@start = attributes[:start]
@end = attributes[:end]
end
validates :name, presence: true, length: { maximum: 255 }
validates :desc, presence: true, length: { maximum: 65536 }
validates :start, presence: true
validates :end, presence: true
end
end
我產生我的模型,我做了一個耙分貝:遷移。我的模式如下所示:
ActiveRecord::Schema.define(:version => 20130527160623) do
create_table "sales", :force => true do |t|
t.string "name"
t.text "desc"
t.datetime "start"
t.datetime "end"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
end
模式文件位於主應用程序中,但銷售模型文件位於引擎中。啊。
因此,我可以做得更好,可能有很多。具體而言,我想知道爲什麼我無法創建Sale對象,或者我可能需要創建一個Sale對象,或者至少爲什麼某種未定義的刪除方法被調用時,我不知道爲什麼。任何援助將不勝感激。謝謝!
編輯耙路線顯示如下:
sales_app_static_pages_home GET /sales_app/static_pages/home(.:format) sales_app/static_pages#home
sales_app_static_pages_help GET /sales_app/static_pages/help(.:format) sales_app/static_pages#help
sales_app_sales GET /sales_app/sales(.:format) sales_app/sales#index
POST /sales_app/sales(.:format) sales_app/sales#create
new_sales_app_sale GET /sales_app/sales/new(.:format) sales_app/sales#new
edit_sales_app_sale GET /sales_app/sales/:id/edit(.:format) sales_app/sales#edit
sales_app_sale GET /sales_app/sales/:id(.:format) sales_app/sales#show
PUT /sales_app/sales/:id(.:format) sales_app/sales#update
DELETE /sales_app/sales/:id(.:format) sales_app/sales#destroy
sales_app_root /sales_app(.:format) sales_app/static_pages#home
你可以發佈'rake routes'的輸出嗎? –
呀,結果是: – Deranger
sales_app_static_pages_home GET /sales_app/static_pages/home(.:format)sales_app/static_pages#家 sales_app_static_pages_help GET /sales_app/static_pages/help(.:format)sales_app/static_pages#幫助 sales_app_sales GET/sales_app /sales(.:format)sales_app/sales#index POST /sales_app/sales(.:format)sales_app/sales#create – Deranger