Rails更新关联的模型

时间:2012-04-30 19:56:14

标签: ruby-on-rails reference model

我有以下内容:

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 %>

我的问题是,有没有办法只用一种形式做两件事?在使用单个模型时,它如何知道何时创建或更新?

1 个答案:

答案 0 :(得分:1)

是的。它们被称为嵌套属性。这个rails cast介绍了如何在应用程序中实现嵌套属性的基础知识: http://railscasts.com/episodes/196-nested-model-form-part-1