0

2つのスキャフォールドモデルのネストされたフォームを作成するにはどうすればよいですか?

多くのミッションがあるシラバスモデルがあります。以前は、ミッションを作成する唯一の方法は、シラバスのネストされたフォーム(Railscastで作成したもの)を使用することでした。昨日、ユーザーが自分でミッションを作成できるようにすることを決めたので、移行をスキップしながらミッションをスキャフォールディングし、既存のミッションモデルのすべてのコントローラーとビューを作成しました。

問題は次のとおりです。ミッションを単独で作成できるようになりましたが、シラバスのネストされたフォームからミッションを作成しようとすると、「#<\ Mission:0xb372ffc。>の未定義のメソッド`difficulty'」というエラーが表示されます Missionsスキーマで定義されていないMissions属性にシラバス属性を渡そうとしていると推測します。(難易度はシラバスのみの属性です)。

要約すると、ネストされたフォームは、ミッションのモデルしかない場合は「ビルダー」で機能しましたが、ミッションを単独で存在できるように足場を組んだ場合、ネストされたフォームを使用できませんでした。

これに影響を与える可能性のあるファイルが2つ以上あったため、要点を作成しました。 https://gist.github.com/2631734

ところで、これらは渡されるべきパラメータです

{"utf8"=>"✓",
"authenticity_token"=>"YxkzNmIJl0jBA467tdHP2zqNv22DgKrzSx+WCFgwKtk=",
"syllabus"=>
    {"category"=>"Technology and Internet",
    "difficulty"=>"Beginner",
    "title"=>"missions testing",
    "description"=>"deccrip",
    "missions_attributes"=>
        {"0"=>
            {"_destroy"=>"false",
            "title"=>"plz",
            "content"=>"<p>\r\n\tdad</p>\r\n"
            }
        }
    },
    "commit"=>"Create Syllabus"
}
4

2 に答える 2

0

私の最善の推測はcreations

current_user.creations.build(params[:syllabus]) 

シラバスではなくミッション集を指します。完全なエラーとユーザーモデルがなければ、その種類を判断するのは困難です。

于 2012-05-08T02:17:02.463 に答える
0

私はそれを理解しましたが、それは本当に面倒です...もっと良い方法があると確信していますが、これに数日間苦労した後、私はこの解決策に満足しています:

  @syllabus = Syllabus.new(:title => params[:syllabus][:title], :category => params[:syllabus][:category], :difficulty => params[:syllabus][:difficulty], :description => params[:syllabus][:description], :author_id => current_user)

  @syllabus.save!

  params[:syllabus][:missions_attributes].each do |a, b|

    @mission = Mission.new(:title => b[:title], :content => b[:content], :syllabus_id => @syllabus.id, :author_id => current_user, :category => @syllabus.category)

    @mission.save!

    end
于 2012-05-09T00:48:35.047 に答える