Rails 3.2.9路由到错误的控制器

时间:2013-01-11 06:18:01

标签: ruby-on-rails controller routes

我在我的应用中使用设计和cancan。两者都有效。

我有一个User模型,我刚刚添加了(使用脚手架)一个名为Purchase的新模型。

在添加购买模型之前,我还有一个仪表板控制器(目前只显示一个页面dashboard#show,是登录{{}后加载的页面{1}}

当用户未登录时,我可以访问localhost:3000/dashboard。但是当用户登录时我不能。我可以访问localhost:3000/purchases但不能访问purchase/1

知道这里发生了什么吗?它给我的错误是

  

“没有路线匹配{:action =>”show“,:controller =>”dashboard“}”

信息中心控制器

/purchases

的routes.rb

class DashboardController < ApplicationController
    def show
        @user = User.find(params[:id])
        authorize! :read, @user
    end

end
  

Rake Route

App::Application.routes.draw do
  root :to => 'static_pages#index'
  match '/about', :to => 'static_pages#about'
  match '/error', :to => 'static_pages#error'
  devise_for :users

  resources :users

  resources :dashboard

  resource :visitors, :only => :create # POST to visitor_path to create a visitor

  resources :purchases

2 个答案:

答案 0 :(得分:0)

由于Dashboard是一个独特的资源,您需要将其设置为:

resource :dashboard

这是资源单数。

我的猜测是,在已登录用户的购买页面上,您有类似link_to "Dashboard", dashboard_path的内容,但无论如何使用资源设置,show动作始终会获得ID。由于您没有提供,因此会出现路由异常。

您可以在此处找到有关奇异资源的信息:http://guides.rubyonrails.org/routing.html#singular-resources

答案 1 :(得分:0)

单数必须为resource,否则为resources

resource :dashboard
resource :visitor, :only => :create

resources :dashboards

取决于任务是什么