【问题标题】:How to render each views without reloading in rails?如何在不重新加载rails的情况下渲染每个视图?
【发布时间】:2016-05-03 18:39:28
【问题描述】:

我在 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 %>
...

如果用户单击按钮 1,我怎么能只显示工具 1,然后当用户单击按钮 2 时隐藏工具 1 和显示工具 2 等? 另一个问题,这是一种有效的方法吗?

编辑:

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

谢谢

【问题讨论】:

  • 您需要有选择地隐藏这些,然后在单击按钮时显示它们。听起来像是jQuery 的工作。

标签: ruby-on-rails ajax


【解决方案1】:

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 加载。


上一个答案

由于您在视图中呈现页面,因此您无需再次通过 ajax 加载它们。我建议您使用一些 jQuery 插件来为您执行此操作。

例如:tabs 或 accordion。

【讨论】:

  • 感谢您的回答,实际上它不仅仅是单个页面,而是来自控制器的页面调用了许多其他页面......这就是我使用 Ajax 的原因,如果我渲染页面加载时间会很长所有这些页面同时进行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2022-06-10
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
相关资源
最近更新 更多