레일즈에 익숙해지기 위해 To Do 애플리케이션을 구축 중입니다. 내 앱에는 4 가지 계층 구조가 있습니다.중첩 된 리소스로 form_for 사용하기
- 사용자
- 목표 (다중 사용자 당 목표)
- 작업 (목표 당 여러 개의 작업)
- 하위 작업 (작업 당 여러 개의 하위)
을 나는 작업 프론트 엔드 양식이 중첩 된 리소스를 사용하는 각각에 대해 내 routes.rb 내가 지금 좋아 바로 사용자 컨트롤러의보기 중 하나에서 모든 형태를 가지고있다 것이 무엇이
resources :goal do
resources :task do
resources :subtask
end
end
같은 것을 가지고있다.
이 내가 만드는 시도 형태 :
<%= form_for @task, url: {controller: 'task', action: 'create'} do |f| %>
<%= f.label :description %>
<%= f.text_field :description %>
<%= f.submit "Add Goal", class: "btn" %>
<% end %>
을하지만이 오류를
No route matches {:action=>"create", :controller=>"task", :id=>"1"}
치울 : ID => 1 내가 오전 사용자 페이지에 해당합니다 (http://localhost:3000/user/1)
내가 알기로는이 단계가 의도 된 goal_id를 어디에도 제공하지 않았다는 것입니다. 이 방법을 구현할 생각은 없습니다.
내가 알아 차린 또 다른 점은 rake routes
에 대한 응답이 많은 URI 경로를 보여 주지만 POST 메서드에는 아무 것도 표시되지 않는다는 것입니다. url:
에있는 form_for
에있는 경로를 POST 방법과 일치시키지 않기 때문에이 경로를 사용할 수 없습니다.
그래서 제 질문은 다음과 같습니다
- 당신이 중첩 된 방법이 form_for 라우트를 자원?
- 작성 작업이 올바르게 라우팅되도록 form_for를 사용하는 동안 상위 리소스의 ID를 제공하는 방법은 무엇입니까?
아마이 당신에게 몇 가지 아이디어를 줄 것이다 : HTTP : // 유래 .com/questions/2034700/form-with-nested-resources – dp7
레이크 경로를 만들고 작업 생성 경로를 확인하십시오. 사용자 ID는 아마 : id로 표시되지 않습니다. – Syl
아니요 나는'/ goal/: goal_id/task'을 생성 작업 경로로 가지고 있습니다. 예, 없습니다 :이 경로에있는 ID는 아직 : goal_id 어딘가에 제공해야하고 (질문에서 언급 한 것처럼) 어떻게 해야할지 잘 모릅니다. –