单击时将 2 Bootstrap 列替换为 2 个隐藏列。 Rails 4, Bootstrap

Replace 2 Bootstrap columns with 2 hidden columns on click. Rails 4, Bootstrap

我正在使用 Twitter Bootstrap 3.

我在页面底部有代表 4 个相似广告的栏目系统。

在视图中:

    <div class="row similar">
                    <% @recomended_ads.each do |advertisement| %>
                        <div class="col-md-3 block-3 clearfix">
                            <div class="block-3-image pull-left">
                               <%= link_to (image_tag advertisement.pictures.first.image,:title=> advertisement.name, :width=>210),advertisement %>        
                            </div><!-- End block-3-image -->

                        BASIC CONTENT!


                    </div><!-- End block-3 -->

                   <%end%>


           <div class="col-md-3 block-3 clearfix" style="height:220px !important;" id="vips">
                  NEW CONTENT
          </div
          <div class="col-md-3 block-3 clearfix" style="height:220px !important;" id="vips2">
                 NEW CONTENT 2
       </div>
    </div>

在控制器中:

@recomended_ads = Advertisement.where(:country_id=>@location.id).where("recomend >= ?", Time.now).where.not(id: @advertisement.id).limit(4).order("RAND()")

基本上它最多生成 4 列。

我需要的:

我需要在用户点击特定内容时更改最后 2 列内容 link。 到目前为止我已经创建了:

<div class="col-md-3 block-3 clearfix" style="height:220px !important;" id="vips">
   NEW CONTENT
</div
<div class="col-md-3 block-3 clearfix" style="height:220px !important;" id="vips2">
   NEW CONTENT 2
</div>

这两列是隐藏的,并且与我想要的列在同一行内hide/replace。

我想出了脚本,show/hide那些隐藏的列

 $(document).ready(function() {
$('.question4').click(function(e){
         $('#vips').slideToggle("fast");
          $('#vips2').slideToggle("fast");

     e.preventDefault();

})
});//end of read

如果控制器操作中只有两个默认列 .limit(2),则工作完美。 如果超过 2 个,这些列将被向下推到下一行。而这正是我不想要的。

问题:

1) 如果点击 link 是否可以将限制值从 4 更改为 2?没有页面重新加载?我相信 Jquery 不能在服务器端改变任何东西。

2) 或者还有其他技巧可以达到这样的效果?

此时我的代码就是这样做的。

项目符号显示它应该是什么样子。

有什么建议会很好吗? 提前致谢。

我想出了解决办法。

它很乱,但可以满足我的需要。

1) 在视图中,我将这一行 <% @recomended_ads.each do |advertisement| %> 更改为: <% @recomended_ads.to_enum.with_index(1) do |advertisement, index| %> 因此我可以为每一列设置索引。

2) 然后将 <div class="col-md-3 block-3 clearfix"> 更改为 <div class="col-md-3 block-3 clearfix" id=<%= "recomended_#{index}" %> > 这样我就可以为每一列创建不同的 div id。

3) 然后脚本现在看起来像这样。

 $(document).ready(function() {
    $('.question4').click(function(e){
       $('#recomended_3').slideToggle("fast");
                $('#recomended_4').slideToggle("fast");
                $('#recomended_5').slideToggle("fast");
             $('#vips').slideToggle("fast");
              $('#vips2').slideToggle("fast");     
         e.preventDefault();
    })
});//end of ready

这很有魅力。 就是过渡效果太丑了,我换个办法吧

希望有人能帮到你。