0

我只是在经历这个

旧的 rails cast 剧集,其中提到的一件事是(现在显然已过时)link_to_function 代码。它提到的一个有趣的片段是

 link_to_function "Add a Task" do |page|
    page.insert_html :bottom, :tasks, :partial => 'task', :object => Task.new
  end

简而言之,单击“添加任务”链接会将“任务”部分附加到没有 ajax 的页面。

我熟悉如何在 Rails 3/3.1 中通过 AJAX 和/或手动 javascript 执行此操作,但是如何在不接触 ajax 的情况下即时拉入模板部分?

4

2 回答 2

1

它只是简单地将 html 内容存储在 javascript 代码中,并在呈现页面时呈现这些内容。因此,当您单击“添加任务”时,部分已经在添加任务操作的 javascript 代码中进行了转义。只需使用 firebug 看一下页面的内容。

文档还显示instert_html原型看起来像这样:

def insert_html(position, id, *options_for_render)
  content = javascript_object_for(render(*options_for_render))
  record "Element.insert(\"#{id}\", { #{position.to_s.downcase}: #{content} });"
end

所以你可以看到内容实际上是task部分的,它被插入到了javascript代码中。另外我不得不提一下,这是使用 javascript 的一种突兀的方式。

看看文档

于 2011-09-16T07:51:51.190 回答
0

我正在经历相同的 railscast,我发现这不起作用的原因是因为此方法使用 Prototype,默认情况下 Rails 3.1 不可用。

您可以通过从以下位置安装原型 gem 来完成此工作:

https://github.com/rails/prototype-rails

于 2012-05-27T22:56:55.257 回答