自定义多模型嵌套表单行为

时间:2012-05-01 05:23:58

标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave

我正在按照Rails指南进行多模型嵌套表单。我有2个模型,页面和图片。 Page has_many图片。我使用fields_for将“图片文件”字段放在“编辑页面”表单中。

每次上传图片时,表单都会添加一个额外的文件字段,以允许上传新图片。

我想要的行为是页面表单只有一个文件字段,它将创建一个新的图片。我不需要以前的图片可以编辑。

这样的问题是1)我怎么能做到这一点? 2)我应该使用嵌套表格吗?因为我在创建图片时没有编辑页面的其他部分。

1 个答案:

答案 0 :(得分: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