0

我有一个呈现几个部分的页面;在我本地的mac上一切都很好,但是在我推送到heroku并访问页面后,部分的顺序是不同的!

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

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 是如何解释命名约定/ruby 循环顺序的……想知道是否有更好的命名对流或逻辑可以添加到我的循环中来控制顺序?

谢谢!

4

1 回答 1

1

改变这个:

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

对此:

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

你不能确定一个枚举器在所有情况下都会选择相同的顺序,除非你以某种方式强制它。

于 2012-10-31T03:45:37.927 回答