我正在制作一个债务管理应用程序,我的控制器中有@opened_debts
和@all_debts
(已打开并退回债务)。
默认情况下,我只在页面上加载@opened_debts
。但我也有一个链接显示页面上的所有债务。
<a href="#" id="show_all_debts">Show all debts</a>
点击此链接后,我希望页面用debts_div
重新加载@all_debts
。
如果我在页面底部使用<script>
制作click event
标记,则将其加载
$('#debts_div).replaceWith('<%= j render @all_debts %>');
Rails实际上会渲染所有债务并使其对用户不可见,直到他点击链接为止。但它会使所有这些巨大的脚本加载页面速度变慢。
我可以加载此列表而不在页面上呈现它,直到用户点击链接吗?
提前致谢!
答案 0 :(得分:2)
使用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 ) %>');
应该有效