2012-10-31 29 views
0

我有一个页面呈现几个部分;在我的本地mac上,一切都很好,但是当我推送到heroku并访问页面时,partials的顺序是不同的!heroku重新命令轨道上的ruby循环输出部分

我使用下面的代码渲染partials,并认为我使用文件命名约定来控制顺序。

html.erb:

<% Dir["app/views/partials/ws/*.html.erb"].each do |ws| %> 
<%= render 'partials/ws/' + File.basename(ws,'.html.erb').slice(1..-1) %> 
<% end %> 

谐音使用的命名惯例:

_ws_01-why.html.erb 
_ws_02-what.html.erb 
_ws_03-who.html.erb 
_ws_04-where.html.erb 
_ws_05-when1.html.erb 
_ws_06-how.html.erb 

Heroku的呈现顺序是:

_ws_01-why.html.erb 
_ws_02-what.html.erb 
_ws_06-how.html.erb 
_ws_04-where.html.erb 
_ws_05-when1.html.erb 
_ws_03-who.html.erb 

我不知道怎么的Heroku是解释命名约定/红宝石循环顺序...想知道是否有更好的命名对流或逻辑添加到我的循环中控制命令?

谢谢!

回答

1

更改此:

<% Dir["app/views/partials/ws/*.html.erb"].each do |ws| %> 

这样:

<% Dir["app/views/partials/ws/*.html.erb"].sort.each do |ws| %> 

你不能肯定不是一个枚举会选择在任何情况下以相同的顺序,除非你强迫它在某种程度上。

+1

不同排序的原因是由于文件系统不能使我所说的无效 - 如果你想确保使用枚举器时的顺序,那么你必须强制执行命令。比如说,由于生产服务器上的排序规则不同,数据库具有不同的排序顺序,您应该在需要特定排序时强制排序,排序规则实际上是不相关的,文件系统也是如此。 – iain

+0

推理和解决方案扎实!谢谢你 – twinturbotom