您好我目前正試圖建立一個相冊,附加了許多用戶,我試圖解決他們之間的關係,以便它是一個多對多(一個用戶+多個專輯,一個專輯+多個用戶)。但是,在我嘗試加載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。
你能說出發生錯誤的確切位置(哪一行)嗎? – mhutter
嘿dratir。它說show.html.erb(@ user.albums.count)第4行,當我刪除相同的錯誤彈出爲該文件中的下一個@user引用 – Edmund
我修好了!問題是我的模型被命名爲UserAlbums,而不是UserAlbum。 – Edmund