2012-08-16 52 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

相关问题