2012-08-16 50 views
2

我對rails很新,但我已經完成了一些項目,包括Michael Hartl教程。 我正在構建一個存儲虛擬衣櫃的簡單應用程序。 我有2個表格 - 用戶和項目 - 用戶has_many項目和項目belongs_to用戶。 我成立了我的routes.rb文件中的下列具名的路線:Rails 3 - 命名的路由重定向到錯誤的控制器動作

match "/wardrobe", to: "items#index" 

然而,當我嘗試去到我的瀏覽器/衣櫥,我得到一個沒有路由匹配錯誤如下:

No route matches {:action=>"show", :controller=>"items"} 

我不知道爲什麼當我通過索引操作命名路由時,rails會通過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 

耙路線提供以下功能:

wardrobe  /wardrobe(.:format)  items#index 

所以,我知道路線存在。 任何人都可以解釋這裏發生了什麼?我該如何解決它?提前

+0

嘗試改變: 匹配 「/衣櫥」,以 「項目#指數」 到 GET 「/衣櫥」,以 「項目#指數」 並使用新的錯誤調試。 – doug 2013-01-29 00:35:52

+0

另外,什麼耙路線說? – doug 2013-01-29 00:43:29

回答

0

這可能是因爲它是耙路線

由於被稱爲wardrobe_path而不是wardrobes_path(複數) - 當它的奇異Rails會默認顯示的行動,我相信。這可能會造成混亂。

+0

我不確定 - 我已經看到發生了這種情況,但只有在嘗試路由到實際的表名稱時纔會這樣。衣櫃不是桌子,它只是比物品更整潔的路線。如果我訪問/項目,我實際上會得到相同的錯誤,這很奇怪,因爲它就在耙路徑中。 – ToriBean 2012-08-16 15:35:21

相關問題