2012-05-01 23 views
0

複数モデルのネストされたフォームを実行するためのRailsガイドに従っています。私は2つのモデル、ページと画像を持っています。ページhas_many Pictures。私は、画像ファイルフィールドをfields_forを使用してページ編集フォームに入れています。複数モデルのネストされたフォーム動作をカスタマイズする

私は画像をアップロードするたびに、フォームは、新しい画像がアップロードされるのを可能にするために追加のファイルフィールドを追加します。

私がしたい振る舞いは、常に新しい画像を作成する1つのファイルフィールドのみを持つページフォームです。私は以前の画像を編集する必要はありません。

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

答えて

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 
+0

「の場所をあなたが好きな場所を形成し、写真をコントローラに送信します。 " これを行う方法は? –

+0

私は自分の答えを編集しました。見てください。 –

+0

form_for [@page、Picture.new]は私が探していたものです!ありがとう! –

関連する問題