我正在嘗試從資料庫中替換一列名稱的名稱陣列。我是 Ruby on rails 的新手,所以它可能很簡單。
這作業正常:
<% students = %w(John Paul Ringo George) %>
<% teams = RoundRobinTournament.schedule(students) %>
<td><%= teams %></td>
這我得到一個錯誤:
<% @players.each do |player| %>
<% students = player.first_name %>
<% teams = RoundRobinTournament.schedule(students) %>
<td><%= teams %></td>
錯誤:
undefined method `delete_at' for "John":String
Did you mean? delete
delete!
在 RoundRobinModule 中,“delete_at”導致錯誤的原因:
require 'round_robin_tournament/version'
module RoundRobinTournament
def self.schedule(array)
array.push(nil) if array.size.odd?
n = array.size
1.step(n / 2, 1).each do |i|
array.insert(n - i, array.delete_at(i))
end
pivot = array.pop
games = (n - 1).times.map do
day = [[array.first, pivot]] (1...(n / 2)).map { |j| [array[j], array[n - 1 - j]] }
array.rotate!
day
end
array.push pivot unless pivot.nil?
games
end
end
uj5u.com熱心網友回復:
students應該是一個陣列,但students = player.first_name使它成為一個字串。
我不知道這是否是您想要的,但以下應該有效:
<% students = @players.pluck(:first_name) %> # or @players.map(&:first_name)
<% teams = RoundRobinTournament.schedule(students) %>
<td><%= teams %></td>
使用.pluckif@players持有一個ActiveRecord::Relation或.map如果它是一個Player物件陣列。
但是,該錯誤會準確地告訴您問題出在哪里以及問題出在哪里。你只需要注意。該會早前墜毀但兩者String并Array作出回應.size。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375554.html
