0

マルチモデルのネストされたフォームを実行するためのRailsガイドに従っています。ページと画像の2つのモデルがあります。ページhas_many写真。fields_forを使用して、[ページの編集]フォーム内に[画像ファイル]フィールドを配置しています。

画像をアップロードするたびに、フォームにファイルフィールドが追加され、新しい画像をアップロードできるようになります。

私が望む動作は、ページフォームが常に新しい画像を作成する1つのファイルフィールドのみを持つことです。以前の写真を編集可能にする必要はありません。

したがって、質問は次のとおりです。1)上記をどのように行うことができますか?2)ネストされたフォームを使用する必要がありますか?画像を作成するときにページの他の部分を編集していないためです。

4

1 に答える 1

1

あなたはただ使うことができます:

#routes.rb
resources pages do
  resources pictures
end

#PicturesController.new
@picture = Picture.new

#views/pictures/new.haml
= form_for @picture 
#form code here

または、フォームを好きな場所に配置して、画像コントローラーに送信することもできます。

#views/pages/show.haml
= form_for [@page, Picture.new] do |f|
  = f.hidden_field :page_id, :value => @page.id
  = f.file_field :file #change to your own
  = f.button :submit

#PicturesController
def create
  @picture = Picture.new(params[:picture])
  if @picture.save
    redirect_to :back, :notice => "success"
  else
    #some code
  end
end
于 2012-05-01T06:04:14.447 に答える