多くのユーザーに属するフォト アルバムを作成し、ユーザーが複数のフォト アルバムを持つためのアプリを作成しようとしています。ただし、アルバムを作成しようとしても @user.album.count は変わらないようです。
アルバム/new.html.erb
<%= form_for (@album), url: user_albums_path, :html => { :id => "uploadform", :multipart => true } do |f| %>
<div>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :description %>
<%= f.text_area :description %>
<br>
<%=f.submit %>
</div>
<% end %>
アルバム コントローラ
class AlbumsController < ApplicationController
def index
@user = User.find(params[:user_id])
@albums = @user.albums.all
respond_to do |format|
format.html
format.json { render json: @albums }
end
end
def show
@albums = Album.all
@album = Album.find(params[:id])
@photo = Photo.new
end
def update
end
def edit
end
def create
@user = User.find(params[:user_id])
@album = @user.albums.build(params[:album])
respond_to do |format|
if @album.save
format.html { redirect_to user_path(@user), notice: 'Album was successfully created.' }
format.json { render json: @album, status: :created, location: @album}
else
format.html { render action: "new" }
format.json { render json: @album.errors, status: :unprocessable_entity }
end
end
end
def new
@user = User.find(params[:user_id])
@album = Album.new
end
def destroy
end
end
モデル
#album model
class Album < ActiveRecord::Base
attr_accessible :avatar, :name, :description
has_many :user_albums
has_many :users, :through => :user_albums
has_many :photos
end
#user model
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
#photo model (not up to there yet)
class Photo < ActiveRecord::Base
belongs_to :album
end
構成/ルート
Pholder::Application.routes.draw do
resources :users do
resources :albums
end
resources :albums do
resources :photos
end
root :to => "users#index"
これは私のコンソールです
127.0.0.1 の GET "/assets/application.js?body=1" を 2012-10-01 17:41:59 -0400 で開始 - 304 Not Modified (0ms) [2012-10-01 17:41:59] WARN 応答本文のコンテンツ長を特定できませんでした。応答の content-length を設定するか、Response#chunked = true を設定します
127.0.0.1 の POST "/users/13/albums" を 2012-10-01 17:42:11 -0400 で開始しました AlbumsController#create による処理 HTML パラメーター: {"utf8"=>"✓", "authenticity_token"= >"ttqQnEt1KFuwvYRU6MuOLgc5UprSE/zMzGMuzzZiZiE=", "album"=>{"name"=>"fdsafds", "description"=>"fdafdsfafdsfadsfsdsa"}, "commit"=>"アルバムの作成", "user_id"=>"13 "} ユーザー負荷 (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", "13"]] (0.0ms) トランザクション SQL の開始 (0.3ms) INSERT INTO "albums" ("created_at", "description", "name", "updated_at") VALUES (?, ?, ?, ?) [[" 完了 302 Found in 9ms (ActiveRecord: 6.0ms)