ruby-on-rails - 我如何旋转一个集合,导致布局改变动态显示的顺序?

标签 ruby-on-rails ruby-on-rails-3 partial-views

标题很别扭,但这就是我想做的。

假设我有 4 张图片。每张图片都有两种文件大小(770 x 350 && 370 X 110)-有点similar to this .

我想做的是循环遍历 @products 的集合(每个 product 都有一个具有多种尺寸的图像),这样 770 image 在每次页面加载时都不同。

即我想给所有产品 1/4 的机会出现在我 View 的 770 插槽中 - 而无需我手动更改它(比如给一个 product 一个特殊的“特色”标志)。

所以我有 4 个产品的集合,每个产品有 2 个不同尺寸的 2 张图片。我希望页面上的图像布局随着每次页面重新加载而改变 - 不像轮播。

假设我要使用的两个 image_tag 语句是:

<%= image_tag product.image_url(:main_banner).to_s %>

<%= image_tag product.image_url(:banner_thumb).to_s %>

其中 product 是循环遍历集合 @products 的迭代器实例。

我很乐意尽可能做到 DRY - 我尝试用 1 个部分来完成它,但是那变得越来越困惑并且无法像我希望的那样工作。

如果我应该添加任何说明,请告诉我。

为了它的值(value),这就是我正在尝试的:

主页#index

<%= render :partial => 'home/featured', :collection => @products, :as => :product %>            

主页#_featured

<div class="span8 featured">
  <%= image_tag product.image_url(:main_banner).to_s %>
 </div>
<div class="span4" >
  <div class="side-img"><%= image_tag product.image_url(:banner_thumb).to_s %></div>
</div>

最佳答案

ActiveRecord 结果是一个数组,所以可以使用sample等数组方法或 shuffle .

您可以将局部变量传递给部分变量,例如从您的产品集合中随机选择的产品:

<%= render [...] locals => { :featured_product => @products.sample } %>    

主页#_featured

<div class="span8 featured">
  <%= image_tag featured_product.image_url(:main_banner).to_s %>
</div>

或者您可以随机循环浏览集合:

<%= render [...] :collection => @products.shuffle [...] %>

关于ruby-on-rails - 我如何旋转一个集合,导致布局改变动态显示的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13394690/

相关文章:

html - 水平居中页脚导航链接

ruby-on-rails - 如何使用 Cucumber 在页面中测试一个、多个或无图像?

ruby-on-rails-3 - 使用 Rack::SSLEnforcer 时从 Devise 确认链接中删除 HTTPS

ruby-on-rails-3 - 复杂的 Arel 查询和 RSpec stub

View 上所有按钮/链接点击或下拉更改的 jQuery 事件

visual-studio - 使用 Razor 在 Visual Studio 2012 Express 中创建局部 View 时出错

ruby-on-rails - Rails 时间奇数 : "x days from now"

ruby-on-rails - 使用 shoulda 重构 Rails 模型上的 rspec 测试

ruby-on-rails - 迁移次要 Rails 版本

javascript - 从 ASP.NET MVC 部分 View 中卸载/删除 javascript 函数