3

モデルには次のものがあります。

company.rb

 has_many :merits
 accepts_nested_attributes_for  :merits

私のコントローラーでは:

def new
   @company = Company.new
   @company.merits.build
 end

私のフォームで:

= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|

  = f.simple_fields_for :merits do |m|
    = m.input :description, :required => false
    = m.input :picture, :required => false

これにより、次のようなハッシュが生成されます。

.."merits_attributes"=>{"0"=>{"description"=>"stove", "picture"=>"www.it.com/stove.png"}}...

私が欲しいのは、次のような複数のオブジェクトです。

... "merits_attributes" => {"0" => {"description" => "stove"、 "picture" => "www.it.com/stove.png"}、 "1" => {" description "=>"冷蔵庫"、"画像"=>" www.it.com/fridge.png "}} .. ..

これを行うことはできますか、これを行うにはどうすればよいですか?そうであれば、コントローラーで次を使用して複数のオブジェクトを作成します:

def create
 @company = Company.new(params[:company])
      if @company.save
        sign_in @company
        redirect_to root_path
      else
        render :new

end
4

1 に答える 1

6

フォームにいくつかのメリットがある場合meritsは、コントローラーで同じ数のメリットを構築するだけです。

def new
  @company = Company.new
  3.times { @company.merits.build } # will build 3 merits
end
于 2012-09-21T20:14:38.947 に答える