Здесь много проблем:
div_1 = Array.new
div_1 << { :Name => 'Rob', :Played => '2', :Won => '1', :Lost => 1, :Points => 4}
div_1
теперь массив с одним элементом, который является хешем.Вам не нужен массив, если у вас будет только один элемент.
for i in (1..2)
Где находится блок для этого цикла?После этого оператора i
по-прежнему не определено, поэтому при вызове
i = i.to_s
вы получите NameError.
div_name = "div_" + i
Даже если i == 1
, div_name
быть строкой со значением 'div_1', а не копией или экземпляром переменной div_1
, которую вы определили выше.
div_name.sort_by { |position| position[:Points] }.reverse!.each do |position| %>
Теперь вы пытаетесь вызвать sort_by
для строки, которая нене отвечайте на это, потому что это не имеет смысла.
<%= position[:Name] %>
В этой области не определена переменная с именем position
.
Кроме того, когда вы обнаруживаете, что внутри тега <% %>
вы помещаете много логики в представлениеэто признак того, что вам нужно переместить этот код в другое место, например, в контроллер.Вы можете определить и вычислить @positions
как массив хэшей в контроллере, а затем в представлении сделать что-то вроде:
<% @positions.each do |position| %>
<%= position[:name] %>
<% end %>