在rails/jquery app上创建ruby时,生成页面的一部分非常耗时.
我想更改页面的加载方式,以便大多数页面立即加载,并为占用异步加载的部分保留占位符,并在完成后使用ajax/jquery注入页面.
我现在拥有的(简化):
应用程序/视图/样品/ show.html.erb:
<div id="theResult">
<%= render :partial => 'calculate', :object => @org) %>
</div>
Run Code Online (Sandbox Code Playgroud)
而部分将使用@org的一些部分来生成一些内容(命中另一个外部REST服务).
应用程序/视图/样品/ _calculate.html.erb
<%
# code to take org and turn it into content
%>
<!--...html to display results here -->
Run Code Online (Sandbox Code Playgroud)
我意识到这可能违反了正确的MVC架构规则,因为我的部分似乎有太多的逻辑,并且想要清理它...
所以我想我有两个问题:(1)我如何让它工作,以及(2)我应该如何清理它以遵循良好的ruby/rails/mvc做法?
在我的应用程序中,我有一个用户配置文件页面,其中有三个选项卡,下面有一个空白div.有一个默认选项卡是白色,另外两个选项卡更暗,"未选中".
我想这样做,以便下面div中的内容根据选择的选项卡呈现部分内容.
我已经让它工作到jQuery允许我点击不同的选项卡,它更改选项卡的颜色而不刷新页面.
但是,我坚持如何让部分正确渲染.有什么想法吗?我坚持如何根据jQuery中选择的选项卡动态调用部分,实际上我不确定是否需要另一个文件与此交互以使其工作.我对rails应用程序中的jQuery相对较新,所以我不确定我是否已经完成了我需要做的一切.
用户个人资料页面:app> views> show.html.erb
<ul class="profile-tabs">
<%= link_to "<li class=\"tab selected\">Tab 1</li>".html_safe, userprofile_users_path, remote: true %>
<%= link_to "<li class=\"tab\">Tab 2</li>".html_safe, userprofile_users_path, remote: true %>
<%= link_to "<li class=\"tab\">Tab 3</li>".html_safe, userprofile_users_path, remote: true %>
</ul>
<div id="profile-content">
<!--content goes here -->
</div>
Run Code Online (Sandbox Code Playgroud)
jQuery:app> assets> javascripts> userprofile.js
$(function() {
$("li.tab").click(function(e) {
e.preventDefault();
$("li.tab").removeClass("selected");
$(this).addClass("selected");
$("#profile-content").html("<%= escape_javascript(render partial:
"How can I make this partial name be generated based on the value of the selected li?")%>");
});
});
Run Code Online (Sandbox Code Playgroud)
用户控制器:app> controllers> …
我的jquery ajax成功了
success: function(data) {
$('#someId').html(data);
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为_information.html.erb的部分文件
我如何渲染我的ajax成功响应rails部分视图(information).
大多数资源都显示了这样的东西
$('#holderDiv').empty().append('<ul> <%= j render @comments %> </li>')
但我对此并不满意.任何其他方式来解决它.