컨트롤러에 새 메서드 내에서 변수 @products = Product.all
이 정의되어 있습니다. 양식의 선택 상자에 표시 될 db 테이블의 값을 포함합니다.유효성 검사 오류로 인해 nil 변수가 생깁니다.
create 메서드가 유효성 검사 오류를 발생시킬 때 나는 render :action => 'new'
을 호출합니다.
다른 모든 변수는 잘 돌아 올 것 같다,하지만 @products 다시 내가 여기 실종 무엇 전무
로 제공됩니다.
컨트롤러에 새 메서드 내에서 변수 @products = Product.all
이 정의되어 있습니다. 양식의 선택 상자에 표시 될 db 테이블의 값을 포함합니다.유효성 검사 오류로 인해 nil 변수가 생깁니다.
create 메서드가 유효성 검사 오류를 발생시킬 때 나는 render :action => 'new'
을 호출합니다.
다른 모든 변수는 잘 돌아 올 것 같다,하지만 @products 다시 내가 여기 실종 무엇 전무
로 제공됩니다.
render :action => new
를 호출하기 전에 인스턴스화되어야 할 것이다 -는 현재 컨트롤러에 new
조치를 실행하지 않습니다, 예상대로.
: :action
와 render
를 사용
레일 이민자를위한 혼란의 빈번한 소스입니다. 지정된 동작은 렌더링 할 뷰를 결정하는 데 사용되지만 Rails는 컨트롤러에서 해당 동작에 대한 코드를 실행하지 않습니다. 뷰에 필요한 인스턴스 변수는
render
을 호출하기 전에 현재 작업에서 설정해야합니다.
render :action => 'new'
은보기를 렌더링 만하고 컨트롤러에서 새 메서드를 호출하지 않습니다. 그래서 새로운 방법에서 인스턴스화 된 모든 변수는 바로 new
행동에 대한 보기를 렌더링 ActionView
을 요구하고있다 render :action => 'new'
render :action => :new
대신 redirect_to :action => :new
을 사용할 수 있습니다. 이렇게하면 모든 인스턴스 변수가 올바르게로드되고 create
작업에서 전체 new
논리를 복사하지 않아도됩니다.
행운을 빈다.
'@ products' 또는 @ product'? 당신은 여기 둘 다 가지고 있어요. 둘 다 코드에 포함되어 있습니까? – sarnold
사과입니다. @products입니다. – ShaggyInjun