我对rails非常陌生,但之前我已经完成了几个项目,包括Michael Hartl Tutorial。 我正在构建一个存储虚拟衣柜的简单应用程序。 我有2个表 - 用户和项目 - 用户拥有多个项目,一个项目属于一个用户。 我在routes.rb文件中设置了以下命名路由:
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
在create上调用重定向,如下所示:
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
所以,我知道路线存在。 谁能解释一下这里发生了什么?我该怎么办呢?
提前致谢
答案 0 :(得分:0)
这可能是因为它的rake路由被称为wardrobe_path
而不是wardrobes_path
(复数) - 当它的单数Rails默认显示我相信的动作时。这可能会造成混乱。