2010-11-20 76 views
0

我正在使用Ryan Bates的Complex Forms Deep Branch,并试图复制该示例以获得具有两个附加嵌套级别的表单。Rails - Railscasts嵌套的复杂形式

SurveyName有许多SurveyQuestions,其中有许多SurveyOptions。

# application_helper (identical to deep branch) 
def remove_child_link(name, f) 
    f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)") 
end 

def add_child_link(name, f, method) 
    fields = new_child_fields(f, method) 
    link_to_function(name, h("insert_fields(this, \"#{method}\", \"# {escape_javascript(fields)}\")")) 
end 

def new_child_fields(form_builder, method, options = {}) 
    options[:object] ||= form_builder.object.class.reflect_on_association(method).klass.new 
    options[:partial] ||= method.to_s.singularize 
    options[:form_builder_local] ||= :f 
    form_builder.fields_for(method, options[:object], :child_index => "new_#{method}") do |f| 
    render(:partial => options[:partial], :locals => { options[:form_builder_local] => f }) 
    end 
end 

# application.js (identical to deep branch) 
function insert_fields(link, method, content) { 
    var new_id = new Date().getTime(); 
    var regexp = new RegExp("new_" + method, "g") 
    $(link).up().insert({ 
    before: content.replace(regexp, new_id) 
    }); 
} 
function remove_fields(link) { 
    var hidden_field = $(link).previous("input[type=hidden]"); 
    if (hidden_field) { 
    hidden_field.value = '1'; 
    } 
    $(link).up(".fields").hide(); 
} 

在Deep Branch中,项目有许多任务,其中有许多任务。我的_task.html.erb等效为:

<div class="fields"> 
    <%= remove_child_link "remove", f %> 
    <%= f.fields_for :survey_options do |survey_option_form| %> 
    <%= render :partial => "survey_option", :locals => { :f => survey_option_form } %> 
    <% end %> 
    # the above works 
    <%= add_child_link "Add Option", f, :survey_options %> 
    # the above line does NOT work 
</div> 

我希望我已经提供了足够的信息。对我来说,使用相同的帮助程序代码add_child_link函数不起作用,这真是神秘莫测。你能看到我失踪的东西吗?

回答

-2

您还没有在您的application.js中添加javascript代码。

+0

我已添加.js代码。 – sscirrus 2010-11-22 17:32:29

+0

通过你的回答,我在上面丢失了什么特定的代码? – sscirrus 2010-12-12 03:35:21