Ruby on rails 呈现页面轨道,模态
我目前正在尝试优化RubyonRails中的页面呈现 我有一个问题,是否有一种方法可以创建一个页面,只在单击与之关联的链接(href)时呈现另一个页面 index.html.erb中的一些代码:Ruby on rails 呈现页面轨道,模态,ruby-on-rails,optimization,modal-dialog,render,Ruby On Rails,Optimization,Modal Dialog,Render,我目前正在尝试优化RubyonRails中的页面呈现 我有一个问题,是否有一种方法可以创建一个页面,只在单击与之关联的链接(href)时呈现另一个页面 index.html.erb中的一些代码: ..... ..... <h4> <%= item.name %> <br/><a href="#<%=itemt.id%>_item_modal">Details</a> </h4> <div i
.....
.....
<h4>
<%= item.name %>
<br/><a href="#<%=itemt.id%>_item_modal">Details</a>
</h4>
<div id="<%=item.id%>_item_modal" class="modal fullscreen">
<div class="item-modal">
<%=render item%>
</div>
</div>
.....
.....
。。。。。
.....
.....
.....
在上面的代码中,我使用的是modal。因此,当单击链接时,_item.html.erb将显示在较小的页面中。类似于弹出窗口
加载index.html.erb时,_item.html.erb中的所有代码也将自动加载,并且由于
<%render item%>
代码
我想要的是,我不希望index.html.erb也呈现_item.html.erb页面中的所有项目,除非我单击“详细信息”按钮
我认为这样做可以在用户请求项目页面时节省一些时间,因为系统不需要检索所有还不需要的信息
你们能帮帮我吗
如果您需要其他信息,请告诉我。您必须使用ajax才能做到这一点。您可以创建一个具有特定id的隐藏div,比如“modal” 将您的h4恢复到以下状态:
<h4>
<%= item.name %>
<br/>
= link_to 'Details', item_path(item), data: {remote: true}, item_details: true
</h4>
在项目视图文件夹中,创建一个文件show.js(.coffee):
$('#modal').html('');
$('#model')。model('show');
这正是你的想法,你必须使它与你的代码兼容。你必须使用ajax来实现这一点。您可以创建一个具有特定id的隐藏div,比如“modal” 将您的h4恢复到以下状态:
<h4>
<%= item.name %>
<br/>
= link_to 'Details', item_path(item), data: {remote: true}, item_details: true
</h4>
在项目视图文件夹中,创建一个文件show.js(.coffee):
$('#modal').html('');
$('#model')。model('show');
这正是您的想法,您必须使其与您的代码兼容。如果您想走ajax路线:
<h4>
<%= item.name %>
<br/>
<%= link_to "Details", item_path(item), remote: true %>
</h4>
然后创建视图“views/items/show.js”
$(body.append();
…显示模态的代码。。。
…钩子以在模式被解除时将其移除。。。
以及视图“views/items/_item_modal.html.erb”
如果您想走ajax路线:
<h4>
<%= item.name %>
<br/>
<%= link_to "Details", item_path(item), remote: true %>
</h4>
然后创建视图“views/items/show.js”
$(body.append();
…显示模态的代码。。。
…钩子以在模式被解除时将其移除。。。
以及视图“views/items/_item_modal.html.erb”
您可以使用Ajax在单击链接时检索所有信息,我可以从中了解到您已经在向数据库调用所有信息。你可以像Salil说的那样用ajax做你想做的事情,但听起来你做的事情不值得。我会添加一层缓存来加快速度。除非详细信息调用非常昂贵……您可以使用Ajax在单击链接时检索所有信息,我可以从中了解到您已经在向DB调用所有信息。你可以像Salil说的那样用ajax做你想做的事情,但听起来你做的事情不值得。我会添加一层缓存来加快速度。除非细节电话真的很贵。。。
<h4>
<%= item.name %>
<br/>
<%= link_to "Details", item_path(item), remote: true %>
</h4>
def show
...
respond_to do |format|
format.js
end
end
$(body).append(<%= escape_javascript(render partial: "items/item_modal") %>);
...code to show modal...
...hook to remove modal when it is dismissed...
<div id="<%=item.id%>_item_modal" class="modal fullscreen">
<div class="item-modal">
<%=render item%>
</div>
</div>