2012-05-14 10 views
0

私はエラーを取得しています:子コントローラで親を表示する方法は?

ActiveRecord::RecordNotFound in ShoesController#choose_store_shoes 

Couldn't find Store without an ID 

shoesStoreに属していることに注意してください。これはすべて靴コントローラで行われ、see_shoesアクションから始まり、ユーザーがStoreをクリックすると、choose_store_shoesアクションが使用されます。これは、店と靴を表示する必要があります。私はちょうど実際にページに入るのを助ける必要があります。

ShoesController 

    def see_stores 
    @stores = Store.paginate(:page => params[:page], :per_page => 20) 
    end 

    def choose_store_shoes 
    @store = Store.find(params[:id]) 
    end 

マイルート:

resources :shoes do 
    collection do 
    get 'see_stores' 
    get 'choose_store_shoes' 
    end 
end 

次にあなたが店をクリックすると、それはそれを表示する必要があります私の見解:

<% for store in @stores %> 
    <%= link_to choose_store_shoes_shoes_path(store.id) do %> 
     <%= store.name %> 
     <%= store.location %> 
    <% end %> 
<% end %> 

私はリンクまたは誤ってルーティングと思います。何が正しい方法でしょうか?

ありがとうございます。

答えて

2

urlスキームに:idがない場合、あなたは解析しています:idです。あなたのルートを修正する必要があります。

routes.rbで、urlスキームが:idを受け入れるようにcollection doからmember doに変更します。

あなたのルートにこの変更を行った後、あなたは、あなたが適切なIDで欲しい格納する指定できます。127.0.0.1:3000/shoes/:id/choose_store_shoes

+1

ありがとうございました。また、私の 'link_to'を少し変更しなければなりませんでした。' <%= link_to choose_store_shoes_shoe_path(store)do%> ' – LearningRoR

関連する問題