-1

У меня есть простой проект, в котором я создал view, controller, model, migration используя следующий синтаксис:имеющая ошибки при ассоциации в моделях

rails g scaffold user name:string contact:string 

тогда я создал модель только с помощью следующей команды:

rails g model event event_name:string event_place:string 

, то я создал ассоциацию в моделях, которые вы можете увидеть в следующем коде.

код user.rb класс следующим образом:

class User < ActiveRecord::Base 
    has_many :events 


    attr_accessible :contact, :name, :events_attributes 

    accepted_nested_attributes_for :events 

end 

код event.rb класс следующим образом:

class Event < ActiveRecord::Base 
    belongs_to :user 

    attr_accessible :event_name, :event_place 
end 

код на index.html.erb следующий:

<h1>Listing users</h1> 

<table> 
    <tr> 
    <th>Name</th> 
    <th>Contact</th> 
    <th></th> 
    <th></th> 
    <th></th> 
    </tr> 

<% @users.each do |user| %> 
    <tr> 
    <td><%= user.name %></td> 
    <td><%= user.contact %></td> 
    <td><%= link_to 'Show', user %></td> 
    <td><%= link_to 'Edit', edit_user_path(user) %></td> 
    <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 
</table> 

<br /> 

<%= link_to 'New User', new_user_path %> 

и я гавань Я ничего не изменил в своих взглядах ..... как наголо ld генерирует себя. когда я запускаю мой код в браузере он показывает следующие ошибки:

NoMethodError in Users#index 

Showing /home/wasif/projects/club/app/views/users/index.html.erb where line #12 raised: 

undefined method `each' for nil:NilClass 

Extracted source (around line #12): 

9:  <th></th> 
10: </tr> 
11: 
12: <% @users.each do |user| %> 
13: <tr> 
14:  <td><%= user.name %></td> 
15:  <td><%= user.contact %></td> 

Это код users_controller.rb

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: @user } 
    end 
    end 

    # GET /users/1 
    # GET /users/1.json 
    def show 
    @User = User.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @user } 
    end 
    end 

    # GET /user/new 
    # GET /user/new.json 
    def new 
    @user = User.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @user } 
    end 
    end 

    # GET /user/1/edit 
    def edit 
    @user = User.find(params[:id]) 
    end 

    # POST /users 
    # POST /users.json 
    def create 
    @user = User.new(params[:user]) 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to @user, notice: 'User was successfully created.' } 
     format.json { render json: @user, status: :created, location: @user } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /users/1 
    # PUT /users/1.json 
    def update 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     if @user.update_attributes(params[:user]) 
     format.html { redirect_to @user, notice: 'User was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /users/1 
    # DELETE /users/1.json 
    def destroy 
    @user = User.find(params[:id]) 
    @user.destroy 

    respond_to do |format| 
     format.html { redirect_to user_url } 
     format.json { head :no_content } 
    end 
    end 
end 

Я не знаю, что теперь делать, и как я могу удалить ошибку, так как начинающие им поэтому, пожалуйста, помогите мне, что теперь делать. Заранее спасибо!

+1

Показать свой 'users_controller.rb' пожалуйста. –

+0

U r отсутствует что-то в вашем коде контроллера. Введите здесь код «UserController». –

+0

Вы запустили «rake db: migrate»? –

ответ

1

U имеют неправильный код в методе индекс:

@users = User.all следует использовать вместо @users = user.all

def index 
    @users = User.all 

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

Мне тоже интересно. user.all должен был дать u ошибку. хммм. –

+0

user.all - это моя типизирующая ошибка ... ее совершенно прекрасный User.all в коде ... но с той же ошибкой. –

-1

Пожалуйста, проверьте DB и убедитесь, что у вас есть столбец «user_id» в таблице «События»

+0

Это не вызовет описанную здесь ошибку. – Mischa