簡體   English   中英

未使用 fields_for 保存的關聯對象

[英]Associated object not saved with fields_for

我是 Rails 的新手,並且我的關聯對象沒有被保存有問題。 我想我按照應該做的方式做了所有事情,但我不知道為什么它不起作用。 所以提前感謝所有能幫助我更接近解決這個問題的人。 這些是我的模型:

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

在我的exams_controller我有這個:

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方法,我也嘗試使用普通的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 %>

部分是這樣的,以后會擴展

<%= f.inputs :date%>

現在我得到了包含正確的三個日期字段的表單,我可以正確地保存Exam本身。 當我查看params[:exam][:examdates_attributes] ,日期在那里:

{"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放在我的 rails 控制台中時,我得到[] 我真的不知道我做錯了什么,所以非常感謝每個小提示:)

由於您在考試模型中使用attr_accessible ,我認為您必須在該列表中包含:examdates_attributes 否則,將不允許對嵌套模型進行質量分配。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM