如何在不重新加载rails的情况下渲染每个视图?

时间:2016-05-03 18:39:29

标签: ruby-on-rails ajax

我在rails应用中渲染视图时遇到问题。 我尝试创建一个主页,加载我的应用程序的每个工具(5-6不同),但我想允许用户逐个调用它们,而无需重新加载页面(如一些saas应用程序)。

我尝试使用welcome / index.html.erb页面,使用ajax呈现每个视图:

<button class="button1"></button>
<button class="button2"></button>
<button class="button3"></button>
<%= render "tools1/index %>
<%= render "tools2/index %>
<%= render "tools3/index %>
...

如果用户点击button1,然后在用户点击button2等时隐藏tools1和show tools2,我怎么能只显示工具1? 另一个问题是,这是一种有效的方法吗?

编辑:

我的错,它不清楚。关键是我不想在开头渲染每个页面,完美的东西是逐页加载(不仅仅是显示)它们,就在用户调用它们时

由于

1 个答案:

答案 0 :(得分:2)

快速AJAX加载程序示例

在HTML中添加一些链接/按钮:

<a class="ajax-load" href="/url1">Page 1</a>
<a class="ajax-load" href="/url2">Page 2</a>
<a class="ajax-load" href="/url3">Page 3</a>

<div class="ajax-content"></div>

添加此jQuery代码:

$(document).ready(function(){
  $('.ajax-load').on('click', function(e){
    e.preventDefault();
    $('.ajax-content').load($(this).attr('href'));
  });
});

现在,当用户点击任何链接时,内容将加载AJAX。

上一个回答

由于您在视图中渲染页面,因此您无需再次加载它们。我建议使用一些jQuery插件为你做这个。

例如:tabsaccordion