2011-12-28 17 views
2

レールに新規の人物があり、関連付けられたオブジェクトに保存されていない問題があります。私はすべてのことをやり遂げなければならないと思っています。私は理解できません、どうしてそれはうまくいかないのですか?だから私はこの問題を解決するために少し近づくのを助けることができるすべての人に事前に感謝します。 これらは私のモデルです:私のexams_controller関連付けられたオブジェクトがfields_forで保存されていません

class Examdate < ActiveRecord::Base 
    belongs_to :exam 
    attr_accessible :date, :exam_id 
end 
class Exam < ActiveRecord::Base 
    attr_accessible :title, :prof_id, :deadline 
    belongs_to :prof 
    has_many :examdates, :dependent => :destroy 
    accepts_nested_attributes_for :examdates 
end 

私はこれを持っている:

def new 
    @exam = Exam.new 
    3.times{@exam.examdates.build()} 
end 
def create 
    @exam = Exam.new(params[:exam]) 
    respond_to do |format| 
     if @exam.save 
     .... 

今、私の見解で、私はsemantic_fields_for方法は、私も通常のfields_forでそれを試してみましたが、同じ結果を持っています:部分的に

<%= semantic_form_for @exam do |f| %> 
<% if @exam.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@exam.errors.count, "error") %> prohibited this post from being saved:</h2> 

     <ul> 
     <% @exam.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
<% end %> 
<%= f.inputs do%> 
<%= f.input :title%> 
<%= f.input :prof%> 
<%= f.input :deadline, :start_year => Time.now.year, :label => "Anmeldefrist"%> 
<% end %> 
<%= f.semantic_fields_for :examdates do |builder|%> 
    <%= render "examdates_fields", :f => builder %> 
<% end %> 
<%= f.buttons do %> 
    <%= f.commit_button "Speichern"%> 
<% end %> 
<% end %> 

、この後で

0123延長されます
<%= f.inputs :date%> 

正しい3つの日付フィールドを持つフォームが表示され、Exam自体を正しく保存できます。

{"0"=>{"date(1i)"=>"2006", "date(2i)"=>"1", "date(3i)"=>"1"}, 
"1"=>{"date(1i)"=>"2006", "date(2i)"=>"1", "date(3i)"=>"1"}, 
"2"=>{"date(1i)"=>"2006", "date(2i)"=>"1", "date(3i)"=>"1"}} 

しかし、私は私のレールコンソールでExam.find(1).exdatesを入れたときに、私は[]を取得する:私はparams[:exam][:examdates_attributes]を見てみると日付があります。私は本当に私が間違って何をしたか任意のアイデアを持っているドントので、どんな小さなチップが非常に高く評価され:)

+0

するTry指定:<%= f.semantic_fields_for:examdates、exam.examdatesが行う@ |ビルダー| %> –

答えて

2

あなた試験モデルでattr_accessibleを使用しているので、私はあなたがそのリストに:examdates_attributesを含める必要があるでしょうと思います。それ以外の場合は、ネストされたモデルへの質量割り当ては許可されません。あなたのfields_forで使用されるコレクション

class Exam < ActiveRecord::Base 
    attr_accessible :title, :prof_id, :deadline, :examdates_attributes 
    ... 
+0

これは実際問題ではありません! –

+0

OK - @ syed-aslamの詳細を教えてください。 –

+0

実際、それはそれでした:)そのすばやい答えはありがとう! –

関連する問題