我有以下内容:
class Person < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :person
end
我为一个人创建新任务没有任何问题,但在尝试更新目标时会变得很难。
一开始,我对这两个行动都有所偏袒:
<%= form_for([@person, @person.tasks.build]) do |f| %>
# Form stuff
<%= f.submit "Guardar", :class => 'btn'%>
<% end %>
但它在尝试更新时不断创建新对象。所以我为创建和更新创建了单独的表单,第二个是这样的:
<%= form_for([@person, @task], :url => {:action => :update} ) do |f| %>
# Form stuff
<%= f.submit "Guardar", :class => 'btn'%>
<% end %>
我的问题是,有没有办法只用一种形式做两件事?在使用单个模型时,它如何知道何时创建或更新?
答案 0 :(得分:1)
是的。它们被称为嵌套属性。这个rails cast介绍了如何在应用程序中实现嵌套属性的基础知识: http://railscasts.com/episodes/196-nested-model-form-part-1