[英]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.