Rails 上的 Ruby - Hartl 教程第 7 章 - 无法为 UsersController 找到操作 'index'

Ruby on Rails - Hartl Tutorial Chapter 7 - The action 'index' could not be found for UsersController

我是 Rails 上 Ruby 的新手,所以我在 Rails 教程上关注 Michael Hartl 的 Ruby 并且我 运行一个问题。

在第 7 章第 1 节中,您应该显示用户页面,但我 运行 遇到此错误:

"The action 'index' could not be found for UsersController"

当我试图去 "localhost:3000/users"

我不确定我需要包含哪些所有信息,所以这里有一些,如果我需要更多,请告诉我。我将不胜感激我能得到的任何帮助。我确实在这里查找了类似的问题,但 none 帮助我解决了我的问题。

这是我的 routes.rb

Rails.application.routes.draw do
root              'static_pages#home'
  get 'help' =>     'static_pages#help'
  get 'about' =>    'static_pages#about'
  get 'contact' =>  'static_pages#contact'
  get 'signup' =>   'users#new'
resources :users
end

users_controller.rb

class UsersController < ApplicationController

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

  def new
  end
end

show.html.erb

<%= @user.name %>, <%= @user.email %>

我已经根据教程仔细检查了我的代码,我似乎找不到任何不同之处。我能想到的唯一问题可能是当它要求我创建 show.html.erb 我只是右键单击并点击 "create file" 在我的在线 IDE (教程推荐的云 9.io ). Hartl 只是说你必须手工创建它,所以我认为这就是他的意思。同样,我们将不胜感激任何帮助。谢谢。

您需要向控制器添加索引操作。

class UsersController < ApplicationController

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

  def new
  end

  def index
    @users = User.all
  end
end

你只需要一个索引位置标记,这是在两个文件中完成的。答案在第9章的书里,这就是你要做的。

首先,在users_controller.rb中添加:

def index
  @users = User.all
end

接下来,创建文件 app/views/users/index.html.erb 并添加这个

<% provide(:title, 'All users') %>
<h1>All Users</h1>

本书稍后会完成更多工作,但为了继续进行而不出现任何愚蠢、不必要的错误,这就足够了。