Ruby on rails 呈现页面轨道,模态

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

我目前正在尝试优化RubyonRails中的页面呈现

我有一个问题,是否有一种方法可以创建一个页面,只在单击与之关联的链接(href)时呈现另一个页面

index.html.erb中的一些代码:

.....   
.....
<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>