0

Bエンティティを作成するたびに、新しいエンティティを作成する必要がありますA。これを行うために、のメソッドB.create内に呼び出しを追加してみました。ただし、これによりエラーが発生します。A.createa_controller

Missing template a/create

だから私の質問は:コントローラーBからエンティティを作成するにはどうすればよいですか?A.create

4

1 に答える 1

2

このようなもの?

def create
  @A = A.new(params[:a])
  @B = B.new(params[:b])

  respond_to do |format|
    if @A.save && @B.save
      format.html { redirect_to @A, :notice => 'A was successfully created.' }        
    else
      # render new with validation errors
      format.html { render :action => "new" }        
    end
  end
end

ただし、オブジェクトが「関連」している場合、つまりhas_manyまたはbelongs_toの場合は、次のようなものが必要になる場合があります。

# project has_many tasks
def create
  @project = Project.new(params[:project])
  @project.tasks.new(params[:task])
  if @project.save # this should save both objects and in the same transaction
    ....
end

3番目のオプションはaccepts_nested_attributes_forを使用することです-詳細はこちら:http ://currentricity.wordpress.com/2011/09/04/the-definitive-guide-to-accepts_nested_attributes_for-a-model-in-rails-3/

于 2012-07-15T17:20:21.730 に答える