레일즈를위한 연습으로 레코드를 삭제하지 않고 파괴하려고하지 않습니다.NoMethodError, ActiveRecord 4.0
레일 콘솔에서 다음을 실행합니다. subject.pages.delete(second_page)
아래와 같은 오류 메시지가 표시됩니다 (파괴 시도와 동일). subject.pages에서
NoMethodError: undefined method `name' for nil:NilClass
은 다음과 같습니다
=> #<ActiveRecord::Associations::CollectionProxy [#<Page id: 2, subject_id: 1, name: "First Page", permalink: "first", position: 1, visible: false, created_at: "2016-08-19 17:58:02", updated_at: "2016-08-19 17:58:02">, #<Page id: 3, subject_id: 1, name: "Second Page", permalink: "second", position: 2, visible: false, created_at: "2016-08-19 17:59:07", updated_at: "2016-08-19 17:59:07">]>
주제 페이지와 많은 관계로 하나입니다. 페이지가 속한 주제입니다.
Ed1 : 'second_page'가 로컬 변수 인 것처럼 보입니다. 그래서 레일즈 콘솔을 종료했을 때. 문제를 재현 할 수 없었지만 아직이 레코드를 삭제할 수 없습니다.
Ed2 : 그래서 나는 배움을 계속하기로 결심했고 ERB를 사용하여 subject.pages.size
을 사용할 때까지 아무런 문제가 없었습니다. 다시 말하지만 html.erb 파일이 렌더링되지 않는 'NoMethodError'가 있습니다. 페이지를 올바르게 선언하고 있는지 확인하려면 어디에서 검사해야합니까? 나는 선생님의 코드를 두 번 확인했는데 모두 똑같은 것처럼 보였다. (나는 사소한 것이 빠졌을 수있다.)하지만 내 앱에서이 오류를 해결하는 방법을 놓쳤다.
Ed3 (최종) : 생성 된 테이블을 삭제하고 다시 시작했습니다. 솔루션이 실제로 무엇인지는 확실하지 않지만 컨트롤러의 관계를 변경하면 도움이되었다고 생각합니다. 도와 줘서 고맙다.
사용 : 액티브 4.0.0을 4.0.0 레일, MySQL은 5.17.14 당신은 종속 삭제 (파괴) 옵션 오순절 a를 사용하고
사과드립니다. 페이지가 belongs_to 주제가됩니다. 그러나 나는 아직도 문제가있다. –