用户#index中的Rails教程NoMethodError

时间:2015-05-09 20:00:32

标签: ruby-on-rails ruby railstutorial.org

我正在跟随Michael Hartl的Rails教程。我们刚刚创建了一个Users数据库(这是“demo_app”的第一部分),但是当我启动服务器并导航到新用户页面时,我收到以下错误:

    NoMethodError in Users#index

和应用程序跟踪:

    app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__2922823401409246272_70101530338460'
    app/controllers/users_controller.rb:7:in `index'

我真的不知道如何破译这些错误消息,但这是我的users_controller文件:

 class UsersController < ApplicationController
   # GET /users
   # GET /users.json
   def index
      @users = User.all

      respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
   end
end
....
 ....

第7行是respond_to do |format|行。有什么想法吗?完成Ruby和Rails的新手(想想我会动态学习Ruby)。

P.S。这不是语法错误。我知道的很多。

4 个答案:

答案 0 :(得分:2)

你忘了一个end吗?

def index
   @users = User.all

   respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
   end
end

答案 1 :(得分:2)

我相信你的问题在于没有关闭respond_to do |format|块。应该是:

def index
  @users = User.all

  respond_to do |format|
    format.html #index.html.erb
    format.json { render json: @users }
  end
end

答案 2 :(得分:0)

我试图将您的代码与我的代码进行比较,但我不确定您的代码在哪里。在第2章中,我们构建了一个演示应用程序,但是在我的Users.controller中没有“response_to ...”块。 在这种情况下,您可能应该使用end关闭def索引,但我不确定在这种情况下您的respond_to块应该在哪里。 在第4章中,有一个respond_to块,我的Users.controller中没有索引方法

那么,你能说出你在哪个章节工作吗?也许发布完整的Users.controller文件?

答案 3 :(得分:0)

您的config/routes.rb文件是否包含一行声明您的urls / users / *应该发送给您的UsersController?

如果该行不存在,则应添加config/routes.rb

resources :users