何が間違っているのかわかりません。これは私のルートです:
resources :stores do
get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end
そして、私のパスは次のようになります。<%= link_to "Add Shoes", add_shoes_path %>
しかし、パスが存在しないというエラーが発生します。両方を使用するにはどうすればよいですか?
何が間違っているのかわかりません。これは私のルートです:
resources :stores do
get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end
そして、私のパスは次のようになります。<%= link_to "Add Shoes", add_shoes_path %>
しかし、パスが存在しないというエラーが発生します。両方を使用するにはどうすればよいですか?
正しく思い出せば、resources
ブロックにネストされているため、最後に追加stores
されます。したがって、正しいルートはadd_shoes_stores_pathです。add_shoes_stores_index_pathを提供するために、最後にインデックスを追加することもあります(理由はわかりません)。
通話なので、いつでもブロックget
の外に置くことができます。resources
さらに、それを行うためのより多くのRailsの方法は次のようになります。
resources :stores do
collection do
get :add_shoes
end
end
あなたはそれをどのように扱いたいかについてここにたくさんのオプションがあります。rake routes
ただし、簡単なヒントとして、コマンドラインからいつでも入力して、使用可能なすべてのルートとそれらが指す場所のリストを取得できます。
コードを明確にするためにこのようにすることを検討している場合は、次のことを覚えておいてください。ルートには、ポイントしている場所を常に記載する必要があります。それはとの両方add_shoes
になりstores
ます。それは実際には冗長ではないので、持っているadd_shoes_path
ことは文字通り任意のコントローラーを指すことができます。私は間違いなくRailsのやり方に固執します-深く掘り下げるにつれて、それはより理にかなっています。
最後に、別の考え-店舗モデルに靴を追加する場合、各店舗に靴があることは理にかなっています。おそらく、Shoesの新しいモデルを作成し、RESTFULルーティングを使用する必要があります。