0

トレイルhas_manyチャプター

章belongs_toトレイル

私のルート:

resources :trails do
  member do
    resources :chapters do
      member do
        resources :clues
    end
  end
 end
end

new.htmlビューの標準フォームから呼び出されます

私のchapters_controller.rbから

def creat
  @trail = Trail.find(params[:id])
  @chapter = @trail.chapters.build(params[:chapter])
     if @chapter.save
       flash.now[:status] = "Chapter created"
       redirect_to @chapter
     else
       flash.now[:error] = "Name needed"
       render 'new'
     end
end

トレイルIDが1として始まり、作成後のトレイルIDが28(またはchapter_id)であることを示すログ。

Started POST "/trails/1/chapters" for 127.0.0.1 at Fri May 04 20:31:15 -0700 2012
Processing by ChaptersController#create as HTML
Parameters: {"commit"=>"Create New Chapter", "chapter"=>{"name"=>"", "gate"=>"", "assetkind"=>"url", "description"=>"", "asset"=>""}, "authenticity_token"=>"Puu7EL8yQEsU4/NimBdL6mJRXiXoFTbHb1DSYvFNDgI=", "utf8"=>"✓", "id"=>"1"}

.
.
.
(3.7ms)  commit transaction
Redirected to http://localhost:3000/trails/28/chapters/28

..trails / 1 / chapters / 28にリダイレクトされることを期待しています...期待するパスを反映するようにURLを変更すると、正しいページに正しいコンテンツが表示されます。

私は多くの問題を抱えていますが、これは私がそれらを理解するのを助ける手がかりになるかもしれないと思います。私のルートまたは私の協会に何か問題がありますか?アソシエーションを再構築してネストしましたが、問題が発生しています。

お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

1

あなたのルートは過度に具体的です。あなたは本当にこれが必要です:

resources :trails do
  resources :chapters do
    resources :clues
  end
end

cluesそして実際には、浅いルートを提供するのではなく、第3レベルにネストしたままにしておく価値があるかどうかを検討する必要があります。

chapterまた、ネストされたルートを構築するために使用される両方のオブジェクトをパスヘルパーに渡す必要があります。

redirect_to trail_chapter_path(@trail, @chapter)

それ以外の場合は、チャプターのIDのみが含まれます。これが、トレイルIDが予期せず28にジャンプする原因です。

于 2012-05-05T05:29:21.210 に答える