ruby-on-rails 如何在不重新加载整个页面的情况下刷新div?

vwkv1x7d  于 2022-12-20  发布在  Ruby
关注(0)|答案(3)|浏览(131)

我有一个div,我想刷新它的内容而不重新加载整个页面。
我尝试了很多方法( AJAX 调用,javascript等),但我没有做到这一点。
我的div显示了ModelName.all的全部内容。在这个特殊的div中,我们可以添加我使用的Model的新实体(通过表单)。
我显示这个div要感谢Rails的Partial View。
目前,我在用户提交表单时使用此方法:

$('#ArticlesDiv').html("<%= escape_javascript (render partial: 'articles') %>");

但是我的局部视图似乎没有最新的模型,因为在添加新实体之前,我看到了5个元素,而在添加新实体之后,我又看到了5个元素,出于测试的目的,我使用了javascript alert,它显示ModelName.all.count
而且警报显示5!但是当我查看我的数据库内容时(在警报之前),我可以看到6个元素!而且当我手动刷新我的页面时,div显示6个元素。
代码解释:
主视图:

<div id="ArticlesDiv">
  <%= render(:partial => "articles") %>
</div>

_文章(部分观点):

<script>
  alert('<%=Article.all.count%>');
</script>

<% Article.all.each do |article|) %>

<strong><%= article.name %></strong><br />

<% end %>

我的目标是有一个流畅的界面,它不会重新加载整个页面的任何时候,你添加了其他文章。

jgwigjjp

jgwigjjp1#

您可以将div的内容保存在部分文件中,然后使用URL(例如/divcontents)仅加载内容。您可以使用.load()刷新<div>

$('#ArticlesDiv').load("/divcontents");
hwamh0ep

hwamh0ep2#

尝试使用加载函数jQuery,你应该这样做:
超文本:

<div id="div1"></div>
<button type="button" id="button">Test</button>

jQuery:

$(document).ready(function(){
    $("#button").click(function(){
        $("#div1").load("demo_test.txt");
    });
});
8iwquhpp

8iwquhpp3#

<script>
$(document).ready(function () {
    // will call refreshPartial every 5 seconds
    setInterval(refreshPartial, 5000)

});

// calls action refreshing the partial
function refreshPartial() {
  $.ajax({
    url: "page_url",
    dataType: 'script',
    format: 'js'
 })
}
</script>

相关问题