0

私は何かをするための最善の方法に夢中になっているので、アドバイスをいただければ幸いです。

私は次のモデルを持っています:

class Plan < ActiveRecord::Base
  attr_accessible :description, :name, :user_id

  validates :name, :presence => true
end

class Planplace < ActiveRecord::Base
  attr_accessible :plan_id, :planplace

  validates :planplace, :presence => true
end

class Plandate < ActiveRecord::Base
  attr_accessible :plan_id, :plandate

  validates :plandate, :presence => true
end

計画には、多くの計画日と計画場所を含めることができます。私はこれらのそれぞれに非常に基本的な作成を行うコントローラーを持っています。

class PlansController < ApplicationController

def create
    @plan = Plan.new(params[:plan])
    if @plan.save
        flash[:success] = "Created ..."
    else
        flash[:alert] = "placeplace save error ..."
    end
end   
end

class PlanplacesController < ApplicationController

    def create
        @planplace = Planplace.new(params[:planplace])
        if @planplace.save
            flash[:success] = "Created ..."
        else
            flash[:alert] = "placeplace save error ..."
        end
    end
end

class PlandatesController < ApplicationController

    def create
        @plandate = Plandate.new(params[:plandate])
        if @plandate.save
            flash[:success] = "Created ..."
        else
            flash[:alert] = "plandate save error ..."
        end
    end
end

私がする必要があるのは、プランを作成し、そのplan.plan_idを使用して複数のプラン日付と複数のプランプレイスを保存できる単一のビューを持つことです。

基本的なレベルでこれを達成するための最良の方法は何ですか(私はリロードせずに保存するためにajax呼び出しを行うことを目指しますが、私はこれから遠く離れています、私はまだ学ぼうとしています)。

これを単一の「新しい」プランビュー内に配置しますか?fields_forを使用して、同じフォーム内の複数のモデルを更新するフォームを試してみましたが、ここで実行する前に、ここで採用する最善のアプローチの概要を理解したいと思います。

モデル内でhas_manyとbelongs_toを使用する必要があることはわかっていますが、関係が正しいように完全に保存するための最良の方法がわかりません。

うまくいけば、私はこれをうまく説明しました。最善のアプローチに関する提案は大歓迎です。

(親切にしてください、私は今1か月しかRailsを学んでいません)

---編集---ここでモデルを作成し、必要なオブジェクトを渡す方法を説明しました。少し戸惑っていたので、この質問を正しくしなかったと思います。それを見てくれたすべての人に感謝します。

4

1 に答える 1

1

ネストされたモデル フォームを確認してください。

あなたの場合、計画has_many :plandateshas_many :planplaces. Plandate と Planplace の両方belongs_to :plan。Plandates と Planplaces には、 の列が必要ですplan_id:integer

于 2012-11-03T16:36:58.383 に答える