2012-10-01 39 views
0

您好我目前正试图建立一个相册,附加了许多用户,我试图解决他们之间的关系,以便它是一个多对多(一个用户+多个专辑,一个专辑+多个用户)。但是,在我尝试加载show.html.erb后,我在触摸模型和迁移后收到错误。请帮忙!!Rails:未初始化的常量User :: UserAlbum?

错误:

uninitialized constant User::UserAlbum

show.html.erb

<% provide(:title, "Welcome, #{@user.name}!") %> 

<div> 
    You currently have <%= pluralize(@user.albums.count, "album") %> 
</div> 

<div> 
    <%= link_to "Create a new album!", new_user_album_path(@user) %> 
</div> 

<div> 
<% if @user.albums.any? %> 
hey 
<% else %> 
boo 
<% end %> 
</div> 

<%= link_to "Back", users_path %> 

相册样板

class Album < ActiveRecord::Base 
    attr_accessible :avatar, :name, :description 
    has_many :user_albums 
    has_many :users, :through => :user_albums 
    has_many :photos 
end 

用户模型

class User < ActiveRecord::Base 

    has_secure_password 
    attr_accessible :email, :name, :password, :password_confirmation 
    validates_presence_of :password, :on => :create 

    validates_format_of :name, :with => /[A-Za-z]+/, :on => :create 
    validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create 
    validates_length_of :password, :minimum => 5, :on => :create 

    has_many :user_albums 
    has_many :albums, :through => :user_albums 
    accepts_nested_attributes_for :albums 

end 

照片模式(也许没有必要看这个)

class Photo < ActiveRecord::Base 
    belongs_to :album 
end 

user_albums模型

class UserAlbums < ActiveRecord::Base 
belongs_to :album 
belongs_to :user 
end 

模式

ActiveRecord::Schema.define(:version => 20121001160745) do 

create_table "albums", :force => true do |t| 
    t.string "name" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.string "description" 
end 

create_table "photos", :force => true do |t| 
    t.string "avatar_file_name" 
    t.string "avatar_content_type" 
    t.integer "avatar_file_size" 
    t.datetime "avatar_updated_at" 
    t.datetime "created_at",   :null => false 
    t.datetime "updated_at",   :null => false 
    t.integer "album_id" 
end 

create_table "user_albums", :force => true do |t| 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.integer "user_id" 
    t.integer "album_id" 
end 

create_table "users", :force => true do |t| 
    t.string "name" 
    t.string "email" 
    t.datetime "created_at",  :null => false 
    t.datetime "updated_at",  :null => false 
    t.string "password_digest" 
end 

用户控制器

类UsersController < ApplicationController的

def index 
     @users = User.all 

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

    def new 
     @user = User.new 

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

    def create 
     @user = User.new(params[:user]) 

     respond_to do |format| 
     if @user.save 
      format.html { redirect_to @user, notice: 'User 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 

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

    def update 
     @user = User.update_attributes(params[:user]) 
     if @user.save 
     format.html { redirect_to @user, notice: 'User successfully updated.'} 
     format.json { render json: @user, status: :created, location: @user } 
     else 
     format.html { render action: 'edit' } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 

end 

SOLUTION: 我UserAlbums模型是复数而不是UserAlbum。

+0

你能说出发生错误的确切位置(哪一行)吗? – mhutter

+0

嘿dratir。它说show.html.erb(@ user.albums.count)第4行,当我删除相同的错误弹出为该文件中的下一个@user引用 – Edmund

+0

我修好了!问题是我的模型被命名为UserAlbums,而不是UserAlbum。 – Edmund

回答

0

您有UserAlbum型号吗?

如果没有 - 您需要为您的关联创建一个有效的关联。

class UserAlbum < ActiveReocrd::Base 
    belongs_to :user 
    belongs_to :album 
end 
+0

你好,我现在要添加它 – Edmund

+0

可能是因为我的模型是复数形式吗? 'UserAlbums'? – Edmund

相关问题