2011-07-22 28 views
0

ここで初めてのことです。初めてnested_form gemを使用します。すべてが正常だったようですが、私の "親"モデルのデータは保存されません。私はプロジェクト名だけタスクがOKに保存され、「提出」ではなく、ときここデータを保存するときにnested_form gemを使用すると問題が発生する

は、ので、私のコード

<%= nested_form_for @project do |f| %> 
     <p> 
     <%= f.label :name %><br /> 
     <%= f.text_field :name %> 
     </p> 

     <%= f.fields_for :tasks %> 
     <p><%= f.link_to_add "Add a task", :tasks %></p> 

     <%= f.submit %> 
    <% end %> 

です。

私の手掛かりはありますか?私は何か見落としてますか??

答えて

0

<%= f.fields_for :tasks %> 

あなたはまた、その宣言の終わりに欠けている

<%= f.fields_for :tasks do |task_builder| %> 

であるべきとのためのネストされたフィールドを持っている部分をレンダリングするためにレンダリングあなたのfields_for宣言は非常に適切ではありません関連付けられたオブジェクト

だから、トリックを行う必要があり、この

<%= f.fields_for :tasks do |task_builder| %> 
    <%= render 'task_fields', :f => task_builder %> 
<% end %> 
<p><%= f.link_to_add "Add a task", :tasks %></p> 

のようなもので終わる必要があります。今すぐ行う必要があるのは、_task_field.html.erbパーシャルを作成し、f.label、f.text_fieldなどを使用して通常の方法でタスクフィールドを追加することです。

p.s.

あなたのコードはおそらくこれまで働いていない可能性があります。あなたは何かがおそらくあなたのオープニングポストから不足しているので、エラーがあったでしょう。

+0

ありがとう、私はそれを試してみると、それは動作するかどうかをあなたに伝えますが、私のコードは動作し、エラーを表示しません。私はこの[例](https://github.com/ryanb/complex-form-examples)の唯一の "エラー"を守っていますが、プロジェクト名は保存できませんが、タスクに問題はありません。しかし、私はあなたが最初に提案したものを試してみましょう、あなたの助けをもう一度お礼します。 – Angelo

+0

OK、最終的に私は問題を見つけました。それはフォームやフィールド上ではありませんでした...それは私がプロジェクトモデルに入れたものでした。 ** attr_accessible:tasks_attributes **をモデルファイルに書き込む必要があります。そのため、すべて削除してください。プロジェクトに関連付けられたプロジェクト名とタスク名が保存されます。助けてくれてありがとう@@jamesw – Angelo

+0

喜んでそれを整理しました – jamesc

1

属性を追加する必要があります。 attr_accessibleの名前などです。

# app/models/project.rb 
class Project < ActiveRecord::Base 
    has_many :tasks, :dependent => :destroy 
    accepts_nested_attributes_for :tasks, :allow_destroy => true 
    attr_accessible :name,:tasks_attributes ## <-- you need this line 
end 
+0

あなたの助けてくれてありがとう、しかしこの問題は数ヶ月前に解決されました – Angelo

関連する問題