如果 Ruby on Rails 中有设置限制,如何显示特定的 div 元素

Posted

技术标签:

【中文标题】如果 Ruby on Rails 中有设置限制,如何显示特定的 div 元素【英文标题】:How to show specific div element if there is a set limit in Ruby on Rails 【发布时间】:2020-11-05 21:51:29 【问题描述】:

我有这个我想要实现的 rails 应用程序。

如果条件limit(4) 显示 4 个 div 元素,如何自动显示静态 div 元素?我想要实现的是在浏览器中显示 4 个邮箱时,这将只显示 Apply for our Program div 元素的静态元素。

<div class="row">
    <% @posts.limit(4).each do |post| %>
        <h2> <% post.title %> </h2>
    <% end %>
</div

<div class="row">
   <div class="border-box">
      <h1>Apply for our Program</h1>
      <a href="#">Link to Program</a>
   </div>
</div

如果显示 4 个帖子,我只想显示这个静态 div 元素。除非帖子不等于 4 时隐藏此静态 div 元素。

<div class="row">
   <div class="border-box">
      <h1>Apply for our Program</h1>
      <a href="#">Link to Program</a>
   </div>
</div

rails 应用程序中是否有一个特殊功能,如果它等于 4,则计算显示的 div,然后显示静态 div 元素。或者如果计数等于 4,我是否需要 Jquery 函数来显示静态元素?

【问题讨论】:

【参考方案1】:

不需要任何JS。只需将第二个 div 放在里面

<% if @posts.count >= 4 %>
...
<% end %>

【讨论】:

绝对解决问题.. 谢谢你的这个。 (弓) 另请注意,如果您之前在控制器中加载了@posts,调用@posts.limit(4) 仍将运行另一个SQL 查询。调用 @posts.first(4) 将为您提供(最多)前四条记录,而无需重新运行查询。【参考方案2】:

如果您需要根据其他事件而不是帖子数量来制作动画或管理显示/隐藏,则可以使用 javascript 实现此目的。

我会用 jQuery 向你展示,但这可以用普通的 JS 轻松实现

<div class="row">
 <% @posts.limit(4).each do |post| %>
    <h2> <% post.title %> </h2>
 <% end %>
</div>

<div class="row box--apply hidden">
  <div class="border-box">
    <h1>Apply for our Program</h1>
    <a href="#">Link to Program</a>
  </div>
</div>

在哪里

.hidden  display:none; 
.show  display: block; 

然后在 JS 中

$(function() 
  const nH2 = $('H2').length;
  const $box = $('.box--apply');

  if(nH2 >= 4) 
    $box.removeClass('hidden').addClass('show');
  
);

并且,可以根据您的要求扩展逻辑。

【讨论】:

以上是关于如果 Ruby on Rails 中有设置限制,如何显示特定的 div 元素的主要内容,如果未能解决你的问题,请参考以下文章

继续:Ruby on Rails 简单了解

AWS SNS 和 Ruby on Rails SMTP

Ruby on Rails Ransack Datetime 到日期搜索

Ruby on Rails,用户可以设置他们的位置

ruby on rails 固定装置中的自动关联

Ruby on Rails AJAX文件上传