0

我需要使用嵌套窗體和jQuery做多個文件上傳。所以我寫了使用link_to_function方法的幫手:渲染部分使用ujs和沒有AJAX調用的軌道上3

def add_document_link(title, form) 
    link_to_function title do |page| 
     form.fields_for :documents, Document.new, :child_index => Time.now.to_i do |f| 
     page << "$('#documents').append('#{escape_javascript(render('/realties/document', :f => f))}');" 
     end 
    end 
    end 

這個代碼只需創建一個鏈接,如果壓制,呈現一個新的文件上傳嵌套形式。它出奇作品,即使我用Rails3中BETA4(我知道「link_to_function」已過時)

是有更好的方法做同樣不使用link_to_function或一些AJAX調用?

在此先感謝;)

+0

編輯:根據本: http://github.com/rails/prototype_legacy_helper 似乎link_to_function是早在導軌上。不知道它是暫時的還是永久的:| – 2010-06-19 14:03:40

回答

1

你可能想給你看我的項目https://github.com/adamaig/complex-form-examples這是從一些其他人的工作的。相同的方法適用於rails 3(我剛剛在本地升級項目以進行測試)。最大的問題是嵌套深度的元素,但是這個項目應該演示一種使用jquery和rails生成模板的ujs方法。

+0

偉大的鏈接!謝謝,我會研究這些代碼;-) – 2010-12-20 09:01:22

1

如果成功,則唯一剩下要做的就是讓它看起來由JavaScript調用移動到一個單獨的文件whatever.js.erb漂亮:

「('/ realties/document', :f => f))%>);」

(注意插Ruby代碼轉化爲該局標籤字符串的變化),你應該能夠做到

現在:

「無所謂」}:遠程=>真%>

該代碼將更加簡潔,並且成功的html看起來會更好,因爲現在沒有任何JavaScript。只要確保你的文檔是html5,並且你包含了JS庫(你可能會在你的代碼工作之後做的)。

我自己正在使用Prototype,但它不應該在JQuery中有所不同。 現在我能想到的唯一弱點是將表格塊傳遞給部分,但它應該工作,現在想想太遲了:)

在這裏發帖是否有效,如果不是,我們將圖出來。現在晚安;]

+0

感謝您的回覆。我的問題是我不會使用遠程操作。我粘貼的代碼在客戶端上工作,而無需創建遠程操作。 我想用一些不太顯眼的東西做同樣的事情:P btw我會嘗試一些不同的東西,以防我粘貼在這裏;) – 2010-06-19 08:57:43

0

好的抱歉,但我沒有注意到你不想要ajax電話。但我不太確定是否調用頁面對象並不會調用這個調用。我認爲,完全不使用ajax,你必須在客戶端以某種方式緩存字段。你完全確定你的例子沒有ajax調用嗎?

如果我能想到的唯一讓它「不那麼突兀」的方法是將javascript提取到application.js文件中,該文件用於存儲自己的javascript,並從該視圖中調用該函數。那就是如果你包含那個文件(application.js)。這將簡單地將javascript從視圖中移開,而不會改變代碼的工作方式。

乾杯:)

+0

謝謝你的回覆。我認爲緩存這種形式並不容易,否則我可以用jquery生成html。 我也嘗試使用一些JavaScript外部標籤,但它不起作用。但它不能與Ajax調用too.that這是因爲它需要FormBuilder實例... 與軌道<3,使用強大的JS,這從來沒有是一個問題。我一直使用我的助手(如發佈的)來呈現嵌套表單,而不需要任何Ajax調用。 現在,與rails3,link_to_function已棄用,好的。但我真的很想知道是否有另一種方法來完成相同的任務。 – 2010-06-19 13:38:46

0

這確實exceedes我的嵌套形式和UJS經驗,但這裏的另一個想法儘量不經過FormBuilder到例如分。也許它會工作。我看到陌生人的事情工作。這可能是正確的,因爲您將它呈現在INSIDE內部,因此實例可能無需直接傳遞即可訪問。如果不工作,那麼它會採取聰明的人比我來回答你的問題:)

+0

通過不傳遞一個FormBuilder實例來獲得這個工作,我應該創建一個* ad hoc * html表單,使用正確的標籤屬性。它肯定會工作,但它不乾淨:/ 感謝您的回覆;) – 2010-06-21 07:52:43

0

見RailsCasts情節196和197

我道歉的唯一紐帶,答案,但沒有人說,這不是更好瑞恩:

196. Nested Model Form Part 1

197. Nested Model Form Part 2

+0

感謝您的回覆,這是我在幾個項目中使用的方法(使用jQuery而不是原型)。順便說一句,這不是一個不顯眼的解決方案。我一直在尋找的東西是不顯眼的,有相同的結果。 – 2010-09-16 11:54:30