1
Topic
が多いForum
があります。私のルートは次のとおりです。親リソースIDをフォームから作成アクションに渡す
GET /forums/:forum_id/topics/new => Topics#new
POST /topics => Topics#create
私の問題が始まる場所です:
= form_for @topic do |topic_form|
このフォームはPOST /topics
ルートにマップされます。トピックを保存するには、forum_id
を提供する必要があります。 new
アクションで利用できますが、そのアクションをcreate
アクションに渡す方法が見つかりません。
私はへのルートを変更してみました:今
GET /forums/:forum_id/topics/new => Topics#new
POST /forums/:forum_id/topics => Topics#create
しかしforum_id
トピックパラメータハッシュ外になってしまった:私はこの問題を解決するにはどうすればよい
{ topic: { title: "Test" }, commit: "Create Topic", forum_id: 1 }
?
それは '@topic = @ forum.topics.buildすべきではない:
これはあなたのフォーラムモデルにhas_manyがいることを前提としています。それはこのようなものになります(のparamsを[:トピック])'、あるいは 'build'の代わりに' create'を使い、呼び出しをスキップして保存しますか? –
どちらも有効な方法ですが、私は決してこれの代わりにこれを使うべきだとは言いません。特にRubyとRailsでは、同じことを達成するための多くの異なる方法があります。私は作成する前にインスタンス化することを好む。そして、新しいものやビルドについては、私は団体で使用するときの違いを正確には分かりませんが、新しいものは私のためだけに構築されています。 – DanneManne