2015-05-09 3 views
0

Я следую инструкциям Rails Майкла Хартла. Мы только что создали базу данных Users (это первая часть «demo_app»), но когда я запустить сервер и перейти на страницу новых пользователей, я получаю следующее сообщение об ошибке:Rails Tutorial NoMethodError in Users # index

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 and Rails (подумал, что я буду изучать Ruby на лету).

P.s. это не синтаксическая ошибка. Я так много знаю.

ответ

2

Вы не забыли одного пользователя? end?

def index 
    @users = User.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @users } 
    end 
end 
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 
+0

у меня нет. Я просто не включил его в резюме (есть другие методы ниже 'index', я их исключил для краткости) –

+0

@MikeB Вы уверены? После вашего редактирования вопрос по-прежнему содержит синтаксическую ошибку. :) – pmichna

0

Я попытался сравнить ваш код с моим, но я не уверен, где вы находитесь в игре. В главе 2 мы создали демонстрационное приложение, но в моем User.controller нет блока «reply_to ...». В этом случае вы должны, вероятно, закрыть индекс def с концом, но я не уверен, что ваш блок response_to должен идти в этом случае. В главе 4, где есть блок response_to, у меня нет указательного метода в моем User.controller

Итак, вы могли бы рассказать, в какой главе вы работаете? И, может быть, опубликовать полный файл User.controller?

0

В вашем файле config/routes.rb содержится строка, указывающая, что ваши URL-адреса/пользователи/* должны отправляться на ваш UserController?

Если строка не существует, вы должны добавить в config/routes.rb

resources :users 
Смежные вопросы