【问题标题】:Update page with AJAX on link click单击链接时使用 AJAX 更新页面
【发布时间】:2014-01-09 13:36:31
【问题描述】:

我正在制作一个债务管理应用程序,我的控制器中有 @opened_debts@all_debts(打开和归还的债务)。

默认情况下,我只在页面上加载 @opened_debts。但我也有一个在页面上显示所有债务的链接。

<a href="#" id="show_all_debts">Show all debts</a>

点击此链接后,我希望页面重新加载 debts_div@all_debts

如果我在页面底部使用click event 制作&lt;script&gt; 标记以加载它

$('#debts_div).replaceWith('<%= j render @all_debts %>');

Rails 实际上会呈现所有债务并使用户在单击链接之前对其不可见。但是使用所有这些庞大的脚本会使页面加载速度变慢。

在用户点击链接之前,我可以加载此列表而不将其呈现在页面上吗?

提前致谢!

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-4


    【解决方案1】:

    使用 rails_ujs

    <%= link_to "Show all depts", model_path(), :remote => true %>
    

    那么您的请求将作为 ajax 发送。用

    为js创建一个视图

    _index.html

    <div>some code</div>
    

    在 index.html.erb 里面做 DRY

    <%= render :partial => 'index.html' %>
    

    index.js.erb 做 DRY

    $('#debts_div).replaceWith('<%= j( render :partial => 'index', :format => :html ) %>');
    

    应该可以的

    【讨论】:

    • 太棒了!有用。谢谢!还有一个问题:现在我在默认打开的index.html.erb 文件@opened_debtsindex.js.erb 文件@all_debts 中有。如何通过 ajax 重新加载 @opened_debts?如何通过链接触发我要渲染的变量?谢谢!
    • 创建一个部分_index.html,你可以将它与index.html.erb一起使用,也可以在index.js.erb内部使用。我已经扩展了答案。见下文
    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 2011-09-12
    • 2014-01-14
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    相关资源
    最近更新 更多