私は Rails にはかなり慣れていませんが、Michael Hartl チュートリアルなど、以前にいくつかのプロジェクトを完了したことがあります。仮想ワードローブを保存するシンプルなアプリを構築しています。ユーザーとアイテムの 2 つのテーブルがあり、ユーザーには多くのアイテムがあり、アイテムはユーザーに属しています。routes.rb ファイルに次の名前付きルートを設定しました。
match "/wardrobe", to: "items#index"
ただし、ブラウザで /wardrobe に移動しようとすると、次のようなルート一致エラーが発生します。
No route matches {:action=>"show", :controller=>"items"}
index アクションを介してルートに名前を付けたときに、レールが show アクションを介してルーティングしようとしている理由がわかりません。これらは、私の ItemsController に関連するアクションです。
def show
@item = Item.find(params[:id])
end
def index
@items = Item.all
end
リダイレクトは、次のように作成時に呼び出されます。
def create
@item = Item.new(params[:item])
if @item.save
flash[:success] = "Item added"
redirect_to wardrobe_path
else
render 'new'
end
end
rake ルートは以下を提供します:
wardrobe /wardrobe(.:format) items#index
だから、ルートが存在することを知っています。ここで何が起こっているのか誰か説明できますか? そして、どうすればそれを修正できますか?
前もって感謝します