Ruby on rails 4 Rails 4 form_标记更新元素带有部分

Ruby on rails 4 Rails 4 form_标记更新元素带有部分,ruby-on-rails-4,Ruby On Rails 4,在Rails 4中,我如何调整下面的控制器、视图和部分视图,以便当我单击“更新时间”提交按钮时,id为“搜索结果”的html div将使用\u results.html.erb部分生成的内容进行更新 我已经有一段时间没有使用Rails了,我似乎记得在Rails1中使用Rails非常简单。我找到的Rails 4文档似乎涉及JQuery,我不熟悉它,也不了解如何将它绑定到这个表单中 我已经通读了以下内容: 但仍然不完全明白发生了什么 规则搜索控制器.rb class RuleSearchContro

在Rails 4中,我如何调整下面的控制器、视图和部分视图,以便当我单击
“更新时间”
提交按钮时,id为
“搜索结果”
的html div将使用
\u results.html.erb
部分生成的内容进行更新

我已经有一段时间没有使用Rails了,我似乎记得在Rails1中使用Rails非常简单。我找到的Rails 4文档似乎涉及JQuery,我不熟悉它,也不了解如何将它绑定到这个表单中

我已经通读了以下内容:

但仍然不完全明白发生了什么

规则搜索控制器.rb

class RuleSearchController < ApplicationController
  def index

  end

  def results

  end
end
<%= form_tag('/rule_search_results', :id => 'search_form') do %>
  <%= submit_tag "Update Time" %>
<% end %>

<div id='search_results'>
  <%= render partial: "results" %>
</div>
<%= Time.new %>
<%= form_tag('/rule_search_results', :id => 'search_form', remote: true) do %>
  <%= submit_tag "Update Time" %>
<% end %>
但是,如果我做了这么简单的事情:

<%= Time.new %>
<hr />


虽然控制台上没有出现错误,但什么也没有发生,搜索结果div也没有更新

进一步更新 我可以迭代AR对象数组,并在search_results div中打印它们的名称,前提是我使用下面这样的方法,并且它是文件中唯一的一行:

<% for rule in rules do %><%= rule.name %><% end %>

但是,下面的方法不起作用

<% for rule in rules do %>
  <%= rule.name %>
<% end %>

这应该可以:

index.html.erb

class RuleSearchController < ApplicationController
  def index

  end

  def results

  end
end
<%= form_tag('/rule_search_results', :id => 'search_form') do %>
  <%= submit_tag "Update Time" %>
<% end %>

<div id='search_results'>
  <%= render partial: "results" %>
</div>
<%= Time.new %>
<%= form_tag('/rule_search_results', :id => 'search_form', remote: true) do %>
  <%= submit_tag "Update Time" %>
<% end %>
“搜索表单”,远程:true)do%>
然后在与_results.html.erb文件相同的目录中创建一个名为“results.js.erb”的文件,如下所示:

$('#search_results').html('<%= render partial: "results" %>');
$('#搜索结果').html('');
它所做的是remote:true告诉控制器它不是一个javascript请求,因此控制器知道查找方法名后跟.js.erb的文件,并自动运行js代码

更新:为了解决多行HTML的问题,您可以在渲染之前添加一个“j”,这将转义输出:

$('#search_results').html('<%= j render partial: "results" %>');
$('#搜索结果').html('');

谢谢,效果很好,这正是我需要的。我真的需要进入JS的东西,并正确地学习它,但我现在在rails中所做的不需要太多。你的回答中缺少了一个括号,我对它进行了编辑,以防以后有人搜索这个问题。当results.html.erb中的代码不是简单的一行一个html标记文件时,这个答案会做一些奇怪的事情。请参阅相关更新以了解详细信息。我认为这是正确的,因为它确实做到了我最初想要的,这可能需要一个单独的问题。这对于绕过1行问题来说非常酷。干杯