RoR:同一形式的多个模型处理?

时间:2011-02-07 01:39:22

标签: ruby-on-rails

我正在开始处理记录管理应用程序。 系统将允许用户管理存储在数据库中的记录,每个记录可以有1个或多个对象称为类别,每个类别可以有1个或多个对象称为优点。 我想这样做的方式是我有3个模型:记录(has_many类别),类别(有标题字段和belongs_to记录,has_many优点),Advantage(有标题和描述字段和belongs_to类别)。

如何在创建或更新记录时允许用户添加新的类别和优势,然后使用单击功能更新/保存所有这些类别和优势?因为用户一定不知道类别和优势是独立的实体,他必须将它们视为记录的一部分吗?应允许用户在记录的创建/更新屏幕中添加任意数量的类别和优势。

非常感谢对这两个问题的任何帮助!

1 个答案:

答案 0 :(得分:3)

简单,记录应该accept_nested_attributes_for类别和优势。您可以使用客户端javascript创建新对象,观看它们包含您需要知道的所有剧集(所有3个剧集): http://railscasts.com/episodes/196-nested-model-form-part-1

如果您无法使用javascript工作,请给我发电子邮件,我不得不重写它,但想法是一样的。

以下是我使用的javascript:


//This function adds the fields for the photo association
function add_fields(id, association, content) {  
   var new_id = new Date().getTime();  
   var regexp = new RegExp("new_" + association, "g");
   var regexp2 = new RegExp("new\\]\\[" + association, "g");
   content = content.replace(regexp, new_id);
   content = content.replace(regexp2, new_id);
   $(id).append(content);  
}


 def link_to_add_fields(name, id, f, association, partial)
   new_object = f.object.class.reflect_on_association(association).klass.new
   fields = f.fields_for(association, new_object, :child_index => "new") do |builder|
     render(:partial => partial, :locals => {:form => builder})
   end
    link_to_function(name, "add_fields( \"#{id}\", \"#{association}\", \"#{escape_javascript(fields)}\" ) " )
  end