def new
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @post }
end
end
def create
@post = Post.new(params[:post])
#something else
end
여기서 우리는 실제로 새 페이지를 만들 때 Page.new (params [: page])가 사용되는 create 메서드를 호출하기 때문에 new 메서드는 new.html.erb 뷰를 호출하는 데에만 사용해야합니다. 그렇다면 왜 우리는 여전히 여기에 새로운 방법으로 @post라는 인스턴스 변수가 필요합니까?왜 새 인스턴스 변수가 필요한가요?
'form_for '를 사용하면 객체에 연결된 양식이 생성되므로 새 작업의 경우 빈 양식으로 바뀌지 만 편집 작업에 해당 양식을 재사용하고 기존 Post 객체를로드하면 폼에 관련 필드를로드하십시오. – xkickflip
이미 폼에 연결된 객체가 있으므로 왜 create 메소드에서 Page.new를 다시 사용해야합니까? – ZeroNegOne
'create' 액션의 핸들러는'new' 액션을 위해 호출 된 핸들러와 완전히 다릅니다. 모든 HTTP 요청은 모든 다른 HTTP 요청과 격리 된 새로운 Rails 호출을 트리거합니다. 원래 설정 한 인스턴스 변수는 더 이상 존재하지 않습니다. 새 요청 객체 만 있으면 매개 변수를 다시 처리해야합니다. – Gareth