【问题标题】:No route matches {:action=>“show”, :controller=>“users”}没有路线匹配 {:action=>“show”, :controller=>“users”}
【发布时间】:2012-07-22 05:01:48
【问题描述】:

我跟着发生了,这是我的用户控制器

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.

我不知道为什么会这样???

【问题讨论】:

  • 你的控制器应该命名为UsersController

标签: ruby-on-rails routing controller


【解决方案1】:

您需要将 User 对象或至少将用户 ID 传递给您正在创建单击的链接的 link_to 方法。试试&lt;%= link_to user.name, user %&gt;

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

【讨论】:

  • 如果我更改控制器的名称,应用程序将损坏
  • 随着控制器也复数你传递给defise_for方法的符号是devise_for :users
  • 现在出现路由错误未初始化常量UsersController
  • 重命名控制器后需要重启服务器。
【解决方案2】:

重命名两个文件:

'user_controller.rb' => 'users_controller.rb'

和顶部的常量:

UserController => UsersController

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

并尝试访问

/users/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多