我正在使用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)或者还有其他技巧可以实现这样的目标吗?
此时我的代码执行此操作。
子弹显示它应该是什么样子。
任何建议都会很棒? 提前谢谢。
答案 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
这就像魅力一样。 只是转换效果很难看,我会去寻求其他解决方案。
我希望有人能提供帮助。