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

时间:2012-07-23 22:15:12

标签: ruby-on-rails routing controller

我发生以下情况,这是我的Usercontroller

class UserController < ApplicationController

def new
     @user = User.new
end

def create
    @user = User.new(params[:user])
    if @user.save
        redirect_to user_session_path
    else
    redirect_to new_user_session_path
end

end

def show
    @user = User.find(params[:id])
    #redirect_to @user
end
end

在我的routes.rb中我有以下内容:

Estaciones::Application.routes.draw do
root :to => "static_pages#home"
match '/contact', :to=>'static_pages#contact'
match '/about', :to=>'static_pages#about'
devise_for :user
resources :user do
#resources :car
end

当我在浏览器上运行时,我得到了这个:

Routing Error

No route matches {:action=>"show", :controller=>"user"}
Try running rake routes for more information on available routes.

我不知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

您需要将User对象或至少用户ID传递到您正在创建要点击的链接的link_to方法。尝试类似<%= link_to user.name, user %>

的内容

还要确保您的控制器已正确命名,例如UsersController(复数)。

答案 1 :(得分:1)

重命名文件:

'user_controller.rb' =&gt; 'users_controller.rb'

和常数在顶部:

UserController =&gt; UsersController

文件名必须与常量匹配,约定是模型为单数,控制器为复数(与表匹配)。

并尝试访问

/users/1