Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在rails 3上使用ujs渲染部分,而不使用AJAX调用_Javascript_Ruby On Rails_Jquery_Ruby On Rails 3_Unobtrusive Javascript - Fatal编程技术网

Javascript 在rails 3上使用ujs渲染部分,而不使用AJAX调用

Javascript 在rails 3上使用ujs渲染部分,而不使用AJAX调用,javascript,ruby-on-rails,jquery,ruby-on-rails-3,unobtrusive-javascript,Javascript,Ruby On Rails,Jquery,Ruby On Rails 3,Unobtrusive Javascript,我需要使用嵌套表单和jQuery进行多个文件上传。因此,我使用link_to_函数方法编写了一个助手: 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

我需要使用嵌套表单和jQuery进行多个文件上传。因此,我使用link_to_函数方法编写了一个助手:

  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
def添加文档链接(标题、表格)
链接到功能标题do页面|
form.fields_for:documents,Document.new,:child_index=>Time.now.to_i do | f|

page如果它能工作,那么唯一要做的就是将JavaScript调用移动到一个单独的whatever.js.erb文件中,使它看起来更漂亮:

whatever.js.erb:

“$('#documents')。追加('f))%>);”

(注意将ruby代码插入erb标记的字符串的变化)

现在,您应该能够执行以下操作:

“whatever”},:remote=>true%> 代码将更加简洁,输出的html将看起来更好,因为现在那里没有任何javascript。只需确保您的文档是html5,并且包含JS库(您可能会这样做,因为您的代码可以工作:)

我自己也在使用Prototype,但在JQuery中应该没有什么不同。 我现在能想到的唯一弱点是将表单块传递给partial,但它应该可以工作,现在想起来太晚了:)


张贴在这里,无论它是否有效,如果没有,我们会找出它。现在晚安;]

好的,对不起,但我没有注意到您不需要ajax调用。不过,我不太确定调用页面对象是否不会进行该调用。我认为,要完全不使用ajax来调用它,您必须在客户端以某种方式缓存字段。您是否完全确定您的示例在没有ajax调用的情况下工作

如果它真的这样做了,我能想到的唯一一件事就是将javascript提取到application.js文件中,该文件用于存储您自己的javascript,然后从视图中调用该函数。如果包含该文件(application.js)。这将简单地将javascript从视图中移开,而根本不改变代码的工作方式


干杯:)

这确实超出了我使用嵌套表单和uj的经验,但这里有另一个想法,请尝试不要将FormBuilder实例传递到部分表单中。也许它会起作用。我见过一些奇怪的事情。这可能是正确的,因为您在该表单中呈现该实例,因此无需直接传递即可访问该实例。如果这不起作用,那么需要比我更聪明的人来回答你的问题:)

你可能想看看我的项目,它是从其他人的工作中衍生出来的。同样的方法也适用于Rails3(我刚刚在本地升级了项目以进行测试)。最大的问题是嵌套得很深的元素,但是这个项目应该展示一种使用jquery和rails生成的模板的ujs方式。

感谢您的回复。我的问题是我不会使用远程操作。我粘贴的代码在客户端工作,无需创建远程操作。我想用不那么突兀的东西做同样的事情:顺便说一句,我会尝试一些不同的东西,以防粘贴到这里;)谢谢你的回复。我认为缓存表单并不容易,否则我可以使用jquery生成html。我还尝试在标签外使用一些javascript,但它不起作用。但它也不适用于ajax调用。这是因为它需要FormBuilder实例。。。对于rails<3,使用突兀的JS,这从来都不是问题。我总是使用我的助手(如发布的助手)来呈现嵌套表单,而不需要任何ajax调用。现在,对于rails3,link_to_函数不推荐使用,好吗。但我真的很想知道是否有其他方法可以完成同样的任务。编辑:根据这个:link\u to\u函数似乎又回到了rails中。不知道它是临时的还是永久的:|为了通过不传递FormBuilder实例来完成这项工作,我应该动态创建一个特别的html表单,并为标记使用适当的属性。当然可以,但不干净:/谢谢您的回复;)