Rails 3 - 命名路由重定向到错误的控制器操作

时间:2012-08-16 15:01:48

标签: ruby-on-rails-3 routing

我对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

所以,我知道路线存在。 谁能解释一下这里发生了什么?我该怎么办呢?

提前致谢

1 个答案:

答案 0 :(得分:0)

这可能是因为它的rake路由被称为wardrobe_path而不是wardrobes_path(复数) - 当它的单数Rails默认显示我相信的动作时。这可能会造成混乱。