2016-03-29 8 views
0

私のアプリは意図したとおりに動作しますが、ネストされたルートに関して質問があります。私のルートで私はRailsネストされたルーティングプレフィックス動詞の問題

resources :lists do 
    resources :items 
end 

を持っていると私は熊手を実行すると、ファイル:私は(スペースを節約するために短縮)取得ルート

list_items  GET /lists/:list_id/items(.:format)   items#index 
       POST /lists/:list_id/items(.:format)   items#create 
new_list_item GET /lists/:list_id/items/new(.:format)  items#new 
edit_list_item GET /lists/:list_id/items/:id/edit(.:format) items#edit 
list_item  GET /lists/:list_id/items/:id(.:format)  items#show 

私はチュートリアルや他の材料をたどるとき、彼らの「プレフィックス動詞」だけだろうアクション _item(すなわちNEW_ITEM)を持っていると、フォームが唯一

form_for @item 

の代わりに、どのようなI Hを持っているでしょうave

form_for [@list, @item] 

私は何かが不足していたか、何か間違っているのだろうかと思っていました。どんな助けや情報もありがとうございます。

+0

あなたが持っているものは正しいです。 [もう一つの例があります](http://stackoverflow.com/a/4611932/2272894)。 – MichaelBrawn

+0

私が推測する明確化がほしいだけでした。たぶん私はいくつかのリソースを読むときにあまり注意を払っていませんでした。ありがとう –

答えて

1

チュートリアルでネストされたルートを使用していないようです。あなたのルートの中であなたは、リストのリソース内の項目のリソースを定義している(リソースは、RESTfulなルートに基づいて定義されている)

form_for [@list, @item] 

が使用されているときに、それがあることを認識し、フォームを生成することを知っていますそれはネストされたルートであり、 '/ lists /:list_id/items /:item_id'のようなものに拡張されたルートを持つルートであり、POSTするルートを知るためには2つのidが必要です。

チュートリアルは

form_for [@item] 

を持っていた場合のルートが最も可能性の高い

資源であるので、それは、ネストされたルートではありません:アイテム とリストせずにルートを生成する(すなわちNEW_ITEM =>「/ item/item_id ') あなたのルートに接頭辞動詞にリストが含まれている理由は何ですか?

私は今すぐ電話しています。私は私のコンピュータに着くと、私は少しタイプミスや構造を修正します。

+0

それは私が最初に考えたものです。ちょうど私がしていたことが正しいことを確認したかったのです。助けてくれてありがとう :) –

関連する問題