QA@IT

railsでテーブルをネストした際のエラーについてです。

3072 PV

railsで、

テーマをthemes_controller内でnewしたあとで、
redirect_to new_theme_content_pathでcontents_controllerにとばし、
今度はcontents_controllerでコンテンツを作成するようなことをしたいと思っています。
(テーマとコンテンツを別コントローラ、別ページで処理したい)

一応
resources :theme do
resources :content
end

とhas_many,belong_to等の設定はしました。

しかしいざredirectしようとすると、

No route matches {:action=>"new", :controller=>"contents"}

と怒られます。

このエラーの原因がわからず進みません。

すいませんが、どなたかお願いします。

  • rake routesの結果や、リダイレクトしている部分のコードもあると回答しやすいかと思います。
    あと、この場合は「ネストした*リソース*」ですね。ちゃんとRESTfulにつくったときにコントローラで扱う単位であるリソースと、DBのテーブルは、本質的には別物です。Railsの場合はORMを介して似ることも多いですけども。
    -

回答

リダイレクトするための情報として :theme_id が不足しているためルーティングがみつからない状況です。
永続化されているthemeモデルのインスタンスを用意して、

redirect_to new_theme_content_path(theme)

とすると、リダイレクトできます。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。