2013-10-12 157 views
0

我是Ruby on Rails的初學者,也是Web開發的初學者。我正試圖學習Railscasts ep 196 - 198上的Neste表單。直到javascript和helper部分,我才明白這個情節。我仍然可以理解JavaScript中的「add_fields」函數,但是當他開始鏈接這些方法時,我只是不知所措。任何人都可以幫助和指導這個白癡嗎?Ruby on Rails嵌套模型細分

application_jquery.js:

function remove_fields(link) { 
    $(link).prev("input[type=hidden]").val("1"); 
    $(link).closest(".fields").hide(); 
} 

function add_fields(link, association, content) { 
    var new_id = new Date().getTime(); 
    var regexp = new RegExp("new_" + association, "g") 
    $(link).parent().before(content.replace(regexp, new_id)); 
} 

助手/ application_helper.rb:

module ApplicationHelper 
    def link_to_remove_fields(name, f) 
    f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)") 
    end 

    def link_to_add_fields(name, f, association) 
    new_object = f.object.class.reflect_on_association(association).klass.new 
    fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder| 
     render(association.to_s.singularize + "_fields", :f => builder) 
    end 
    link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")") 
    end 
end 

順便說一下,我使用Rails 4,如果有幫助。

回答

0

我遇到了完全相同的問題 - 我認爲問題在於,這需要對rails4進行重構。我已經想出瞭如何將代碼的其餘部分更新到rails 4(我已經在railcast討論主題上發佈了這個代碼) - 但是這個javascript代碼和輔助代碼現在沒有做任何事情,我們顯然錯過了一些東西。任何人的幫助將不勝感激!

編輯:我更新了代碼,以更新後的「403動態表單」中的內容給出了它的工作原理(這是一個專業版)。