2010-11-23 10 views
1

私はレールで次の問題に直面しています。私は1からn個のタスクを含むことができる1からn個のサブプロジェクトを含むかもしれない新しいプロジェクトを編集/作成するためのフォームを持っています。私は新しいプロジェクトを作成するときにハッシュを含むハッシュを持つデータを含む複数モデルのフォームを持つレール

だからコントローラが実行されます。

@project = Project.new 
sub_project = SubProject.new 
work = Work.new 
sub_project.works << work 
@project.sub_projects << sub_project 

は、私はビューの入力フィールドを生成する基本的な構造、私はこのようなビルドアップ形式持つ:

プロジェクトを

<% form_for (:project, :url => action_parameter, :id => project) do |form| %> 

サブプロジェクト

<% fields_for "project[sub_projects][]", sub_project do |subproject_form| %> 

ここまではうまくいっていますが、今ではどのようにfields_forのタスクを定義しますか?パラメータ コンテナの種類を競合

:私は雑種から次のエラーを取得するよう、次の試みは...

<% fields_for "project[sub_projects][works][]", work do |work_form| %> 

...は解決策ではありません。 ハッシュのインスタンスが必要ですが、Arrayのインスタンスが見つかりました。 これは、配列 とハッシュベースのパラメータを渡すことによって発生します。 qs [] = value & qs [key] = value。

なぜこれは機能しませんか?そして私はどのように私の問題に取り組まなければならないのですか?

答えて

1

ネストされたモデルフォームを使用する必要があります。 Ryan Batesのthis web castをチェックしてください。私のコードが機能しなかった理由を

+0

ええと私が取り組んでいるコードはまだRails 1.2.3であり、それを2.xや3.xにマージするのは現時点では私のリーグのままです。 – Mark

+0

2.3へのアプリケーションのアップデート後.5これは確かに行く方法でした。だから、チップのおかげで。 – Mark

1

理由は、私は仕事のラインでいくつかの余分な括弧を追加するのを忘れていることだった。..

<% fields_for "project[sub_projects][][works][]", work do |work_form| %> 

しかし私は何をしようとすると、前のRails 2.3で可能ていないようです。バツ。だから私はそのバージョンに私のアプリケーションを更新し、John Drummondが提案したネストされたフォームを使用しました。

関連する問題