私は最初のRailsプロジェクトに取り組んでおり、それfile_field
をアップロードするためにを使用しようとしphotos
ていbelongs_to :album
ます。アルバムを表示し、ユーザーが1つの場所から写真をアップロードできるようにしたかったので、フォームは私のalbums/show.html.erbページに表示されます。ただし、フォームで[送信]を押すと、アップロードされていないようです。
これが私の写真です/_form.html.erb
<%= form_for(@photo, :html => { :multipart => true }, :url => { :action => 'create'} ) do |f| %>
<%= f.label :avatar %>
<%= f.file_field :avatar %>
<%= f.submit %>
<% end %>
これは私のalbums/show.html.erbページです。@albumインスタンスがアップロードした画像を受信しているかどうかをテストするために、if / elseステートメントを追加しましたが、常に「no」で返されます。
<% if @album.photos.any? %>
yes
<% else %>
no
<% end %>
<div>
<%= render 'photos/form' %>
</div>
写真コントローラー(これでインスタンス変数を設定する方法について本当に混乱しています)
class PhotosController < ApplicationController
def create
@album = Album.find(params[:user_id][:album_id])
@photo = @album.build(params[:photo])
respond_to do |format|
if @album.save
format.html { redirect_to @album, 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
アルバムモデル
class Album < ActiveRecord::Base
attr_accessible :avatar, :name, :description
has_many :user_albums
has_many :users, :through => :user_albums
has_many :photos
end
写真モデル
class Photo < ActiveRecord::Base
belongs_to :album
end
他のファイルが必要な場合はお知らせください