2012-06-28 28 views
0

我正在使用的代码:保存从4个随机行发布的数据,使他们不页面生成后随机

<h2> 
<% random_bullets = Bullet.all %> 
<ul> 
    <% random_bullets.shuffle.first(4).each do |r| %> 
<br> 
    <li><%= db.save(r.content) %></li> 
    <% end %> 
</ul> 
</h2> 

从我的分贝拉4周随机的子弹,并将它们发布到网页;我想要做的是让他们保存子弹,这样他们只会在生成页面后随机化。有什么我可以做到这个代码来实现这一目标?如果没有,我能做些什么来实现这一点。代码在嵌入式Ruby中,db是一个sqlite3数据库。

回答

1

设置随机项目符号和随机化属于您的控制器。一旦出现,我建议按顺序设置一个包含bullet.ids数组的cookie。 然后你可以迭代数组,如果它存在,否则创建一个新的并保存它。

在你的控制器:

if cookies[:bullets].nil? 
    @bullets = Bullet.all.shuffle.first(4) 
    cookies[:bullets] = @bullets.collect(&:id) 
else 
    @bullets = [] 
    cookies[:bullets].each do |id| 
    @bullets << Bullet.find(id) 
    end 
end 

在您的视图:

<ul> 
    <% @bullets.each do |r| %> 
    <li><%= r.content %></li> 
    <% end %> 
</ul> 

你知道,它是无效的HTML把一个<ul>一个<h2>内,或者把一个<br>一个<ul>内?

+0

我在控制器外部使用该代码,它工作得很好。 – Evan

+0

它会在视图中工作,这只是不好的做法。 – TomDunning

+0

这就是我现在想要做的就是让它在视图中工作。你知道我该怎么做吗? – Evan