我对 Rails 还很陌生,但我之前已经完成了几个项目,包括 Michael Hartl 教程。我正在构建一个简单的应用程序来存储虚拟衣橱。我有 2 个表 - 用户和项目 - 其中一个用户有_许多项目和一个项目属于用户。我在 routes.rb 文件中设置了以下命名路由:
match "/wardrobe", to: "items#index"
但是,当我尝试在浏览器中转到 /wardrobe 时,出现以下无路由匹配错误:
No route matches {:action=>"show", :controller=>"items"}
当我通过 index 操作命名路由时,我不确定为什么 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
rake routes 提供以下内容:
wardrobe /wardrobe(.:format) items#index
所以,我知道这条路线存在。谁能解释这里发生了什么?以及我该如何修复它?
提前致谢