2011-05-01 2 views
0

게시자의 애플리케이션 용 게시판을 작성하고 있으며, 포럼, 주제 및 게시물과 같은 일반적인 3 가지 리소스를 사용하고 있습니다. 경로 그래서 같이 정의된다 : 새 항목을 만들 때 새 게시물이 스레드를 시작하기 위해 작성된로메시지 게시판 작성시 여러 리소스 관련 문제가 발생했습니다.

resources :forums do 
    resources :topics do 
     resources :posts 
    end 
end 

주제, 중첩 된 자원으로 정의 된 게시물이 있습니다. 그래서 모든 것이 잘 작동합니다. 하지만 주제의 '쇼'페이지에 붙어 있습니다. 이 페이지에는 모든 게시판 모델과 마찬가지로 모든 게시물이 표시된 후 맨 아래에 새 게시물/답장을 추가하는 양식이 있습니다. 게시물의 생성 작업이 트리거되면 주제 등으로 다시 리디렉션됩니다.이 양식을 구현하면 내가 트립됩니다.

는 일반적으로 나는

<%= form_for([@topic, @post]) do |f| %> 
    ... 
<% end %> 

는 ... 단지 페이지는 "정의되지 않은 메서드`topic_posts_path '"오류를 반환 ... 이런 식으로 뭔가 생각할 것입니다. 레이크 루트를 살펴보면 게시물의 작성 작업으로이를 반환하므로 놀라운 일이 아닙니다.

forum_topic_posts POST /forums/:forum_id/topics/:topic_id/posts(.:format)  {:controller=>"posts", :action=>"create"} 

내가 <%을 시도 할 것 나타냈다 = form_for ([포럼, @topic, @ @post]) 할 | f를 | %> form_for,하지만 방금 나에게 같은 오류를 반환했습니다. 대신에 실제 경로를 제공해야한다고 생각하면 < % = form_for : url => forum_topic_posts_url do | f | %> 한번 시도해 보았지만 상관하지 않았습니다.

Google 검색 후, 대부분의 포럼 자습서가 오래되었거나 주제 페이지에 새 게시물 양식을 추가하는 데 부족하여 거의 모든 작업을 이미 수행 한 것으로 나타났습니다.

내가 세울 수 있었던 유일한 다른 것은 3 개 또는 그 이상의 레벨을 중첩하지 말 것을 제안했지만 '왜'가 부족하고 더 적절한 대안을 제시하지 못했습니다. 게다가 위의 경로 경로는 이러한 종류의 동작에 대한 가장 논리적 인 경로처럼 보입니다.

그래서이 유형의 설정에서 게시 양식이 주제 표시 페이지에서 작동하도록하려면 어떻게해야합니까?

답변

0

"form_for ([@ forum, @topic, @ post])를 시도하면 컨트롤러에 @forum 변수가 설정되어 있습니까?

+0

(facepalm) 오 이런, 나는 그것을 간과 했다니 믿을 수 없어. 당신이 올바른지. 고맙습니다. – Shannon