私はTo Doアプリケーションをビルドして、Railsに慣れ親しんでいます。私のアプリには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ルートAをへのリソース?
- 作成アクションが正しくルーティングされるようにform_forを使用している間に親リソースのIDを指定する方法はありますか?
おそらくこれはあなたにいくつかのアイデアを与えるだろう.com/questions/2034700/form-for-nested-resources – dp7
RAKEルートを実行し、作成タスクのルートを確認します。ユーザーIDは、おそらく:idとして示されていません。 – Syl
いいえ私は '/ goal /:goal_id/task'を作成タスクルートとして持っています。はい、いいえ:このルートのID、私はまだ:goal_idどこかを提供する必要があり、私は質問に記載)を行う方法を知らない。 –