2

私は 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

だから、ルートが存在することを知っています。ここで何が起こっているのか誰か説明できますか? そして、どうすればそれを修正できますか?

前もって感謝します

4

1 に答える 1

0

wardrobe_path(複数)ではなく、rake ルートが呼び出されているためかもしれませんwardrobes_path。単数形の場合、Rails はデフォルトでアクションを表示するようになると思います。それが混乱を招いているのかもしれません。

于 2012-08-16T15:28:09.790 に答える