[英]Render partial after ajax call without rails helpers (using webpack)
[英]render partial using ujs and without AJAX call on rails 3
我需要使用嵌套表單和jQuery進行多個文件上傳。 所以我寫了一個使用link_to_function方法的助手:
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調用的更好的方法嗎?
提前致謝 ;)
如果它能正常工作,那么剩下的唯一要做的就是將JavaScript調用移到一個單獨的what.js.erb文件中,使其看起來更漂亮:
whatever.js.erb:
“” $('#documents')。append('<%= escape_javascript(render('/ realties / document',:f => f))%>);“
(請注意將紅寶石代碼插入到erb標簽的字符串中的更改)
現在您應該可以執行以下操作:
“無論”},:remote => true%>
代碼將更加簡潔,輸出的html看起來會更好,因為現在那里沒有任何javascript。 只需確保您的文檔為html5並包含JS庫(由於代碼有效,您就可以這樣做了:)。
我本人正在使用Prototype,但在JQuery中應該沒有什么不同。 我現在能想到的唯一弱點是將表單塊傳遞給了partial,但是它應該可以工作,想不上太遲了:)
在這里發布是否有效,如果沒有成功,我們會解決。 晚安吧;]
您可能想看看我的項目https://github.com/adamaig/complex-form-examples ,它是從其他人的作品中衍生而來的。 相同的方法適用於Rails 3(我剛剛在本地升級了該項目以進行測試)。 最大的問題是深度嵌套的元素,但是該項目應演示使用jquery和rails生成的模板的ujs方法。
好的,很抱歉,但是我沒有注意到您不希望ajax調用。 我不確定如果調用頁面對象仍然不會進行該調用。 我認為要完全不使用ajax來調用它,就必須在客戶端以某種方式緩存該字段。 您完全確定您的示例無需ajax調用即可工作嗎?
如果能做到,那么讓我想起來“不那么麻煩”的唯一方法就是將javascript提取到application.js文件中,該文件用於存儲您自己的javascript,然后從視圖內部調用該函數。 那就是如果您包含該文件(application.js)。 這將只是將javascript從視圖中移開,而根本不改變代碼的工作方式。
干杯:)
這確實超出了我使用嵌套表單和UJS的經驗,但是這是另一個想法,請不要將FormBuilder實例傳遞到局部中。 也許會起作用。 我看過陌生的東西起作用。 這可能是正確的,因為您將其渲染到該表單內部,因此無需直接傳遞實例就可以訪問該實例。 如果這不起作用,那么將需要比我更聰明的人來回答您的問題:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.