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

时间:2015-01-03 13:15:14

标签: javascript jquery css ruby-on-rails twitter-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()")

Basicaly它最多可生成4列。

我需要什么:

当用户点击特定的链接时,我需要更改最后2列内容。 到目前为止,我创建了:

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

这两列是隐藏的,与我想要隐藏/替换的行位于同一行内。

我想出了显示/隐藏那些隐藏的列的脚本

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

     e.preventDefault();

})
});//end of read

如果控制器操作中只有两个默认列.limit(2),则效果很好。 如果有超过2个柱子被推到下一行。这就是我不想要的。

问题:

1)如果点击链接,是否可以将该限制值从4更改为2?没有页面重新加载?我相信Jquery无法改变服务器端的任何内容。

2)或者还有其他技巧可以实现这样的目标吗?

此时我的代码执行此操作。 enter image description here

子弹显示它应该是什么样子。

任何建议都会很棒? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我提出了解决方案。

它很乱,但做了我需要的。

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">更改为&lt; 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

这就像魅力一样。 只是转换效果很难看,我会去寻求其他解决方案。

我希望有人能提供帮助。