2011-03-20 6 views
2

레일즈 초보자들과 나는 뒤죽박죽이다. Rails에는 has_many Tasks라는 프로젝트 모델이 있습니다. 말하자면 사용자가 프로젝트 중 하나에 새 작업을 추가 할 수 있도록 5 개의 프로젝트를 표시하는보기가 있으며 각 프로젝트에는 '새 작업'링크가 있습니다. 그래서 :link_to를 통해 '새'작업에 매개 변수 전달

프로젝트 1
새 작업

프로젝트 2
새 작업 등

새 작업 링크가

'새 작업'

LINK_TO, new_task_path

과 같은 경우

링크가 클릭 된 작업 컨트롤러에서 '새'작업을 알리는 가장 좋은 방법은 무엇입니까? 나는 project_id를 새로운 작업에 전달해야한다는 것을 알았지 만, 어떻게해야 하는지를 해결할 수는 없다.

언제나 감사드립니다.

답변

6

경로가 정의 된 방법에 따라 다르지만 작업이 프로젝트의 하위 리소스 (예 : 다음과 같이)로 정의 된 경우 매우 간단합니다.

resources :projects do 
    resources :tasks 
end 

이 같은 경로 생성합니다

new_project_task GET /projects/:project_id/tasks/new(.:format)       {:controller=>"tasks", :action=>"new"} 

을 그리고 당신은 통해 연결할 수 있습니다 : 내가 찾던 정확히 무엇을

link_to 'New Task', new_project_task_path(@project) 
+0

. 당신의 도움을 주셔서 감사합니다. 이 답변을 얻기 위해 로그인해야합니다. 내일 할거야. – Ben

+1

@Ben 이렇게 할 필요는 없습니다 :'new_project_task_path (: project_id => @ project.id)'. 인스턴스를 전달하면 Rails가 나머지를 처리한다 : new_project_task_path (@project). – Mohamad