저는 컨트롤러에서 인스턴스 변수를 관리하는 것에 압도되어 있으므로이를 관리하는 더 좋은 방법이 있다고 생각합니다.레일즈 컨트롤러의 인스턴스 변수를 패키지합니까?
내 상황은 프런트 페이지 렌더링을 처리하는 PagesController
입니다. 첫 페이지에는 원래 다른 컨트롤러에 속한 여러 개의 작은 폼이 있습니다 (예를 들어 새 폼을 만들고 PostsController가 전용이지만 편의상 앞 페이지에서 쉽게 게시물을 만들 수 있습니다). 폼을 유지하기 위해 모두 해당 인스턴스 변수가 필요합니다 (예 : 새 게시 양식에 @post 객체가 필요함).
이 이렇게 많은 줄은 단지
@post = Post.new # similar for other objects
@some_other_var = OtherController.new # another one
@one_more = AnotherController.new # again
# even more @variables here when the website is big
이 충분히 나쁜하지 못하는 경우가, 내가 수동으로 양식 작업을하기 위해 내 PagesController#index
에이 인스턴스 변수를 추가 할 필요가 있음을 나에게 밝혀 create
또는 edit
작업이 실패하면 (예 : 유효성 검사를 통과하지 못했음) 생각하고 이전 페이지를 렌더링해야합니다. 우리는이 라인을 다시 추가해야합니다. 렌더가있을 때마다 실제로 모든 변형을 포함시켜야합니다.
이러한 코드를 필요한 모든 작업에 수동으로 입력하는 것은 매우 번거롭고 웹 사이트가 복잡 해지면 하나 또는 두 개를 놓치기 쉽습니다.
그래서 우리는 같은 코드를 매번 쓰는 대신 한 번만 포함시켜야하므로 이러한 변수를 관리하는 더 좋은 방법이 있는지 궁금합니다.