0

私は最初の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

他のファイルが必要な場合はお知らせください

4

1 に答える 1

1

必要になるだろう、

@album.photos.build(params[:photo])

また、アップロードのメカニズムは正しいと思います。:)

幸運を

于 2012-10-01T19:06:21.250 に答える