Ruby on Rails를 처음 사용하면서 레일 3.2.13과 루비 1.9.3p392를 사용했습니다. 내 혼란에 기여할 수있는 앱에서 사용할 엔진을 만들려고합니다.ruby on rails 엔진 정의되지 않은 메소드 'delete'for nil : NilClass
엔진 이름은 sales_app입니다. sales_app/sales #에 데이터 묶음을 게시하여 판매를 생성하는 페이지가 있습니다. 판매 컨트롤러의 생성 액션에서는 데이터 처리를 약간하고 Sale 오브젝트를 인스턴스화하려고합니다. 모델에서 객체를 만드는 대신,을 호출한다는 사실조차 모르는 삭제 메서드 에 대해 NoMethodError 예외가 발생합니다. 도와주세요.
다음은 관련 세부 정보입니다. 내 판매/새 페이지 게시물 판매 번호에 다음 매개 변수를 만들 :
날짜 물건이 날짜를 변환하기위한 것입니다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
과 :
{"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"}
판매 컨트롤러는 자사의 생성 작용에 대해 다음이 한 번에 하나의 datetime 시간이 걸릴 것이라고 생각합니다. 자체는 다음과 같은 판매 모델 (I이 중 일부는 다음과 같은 이유를 모르겠어요) :
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
내 모델을 생성했고 나는 갈퀴 DB를했다 : 마이그레이션 할 수 있습니다. 내 스키마는 다음과 같습니다.
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
스키마 파일은 주 앱에 있지만 판매 모델 파일은 엔진에 있습니다. 응.
그래서 내가 할 수있는 일은 아주 많습니다. 특히, 판매 객체를 만들 수없는 이유, 또는 하나를 생성하기 위해해야 할 수도있는 일, 또는 적어도 왜 왜 정의되지 않은 삭제 메소드가 호출되는지 이유를 알기를 바랍니다. 어떤 도움이라도 대단히 감사 할 것입니다. 감사!
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
'레이크 루트'의 출력을 게시 할 수 있습니까? –
그래, 그 결과는 다음과 같습니다 – Deranger
sales_app_static_pages_home GET /sales_app/static_pages/home(.:format) sales_app/static_pages # 집 /sales_app/static_pages/help(.:format를 GET sales_app_static_pages_help) 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