簡體   English   中英

Ruby on Rails 未定義方法“John”的“delete_at”:字符串

[英]Ruby on Rails undefined method `delete_at' for "John":String

我正在嘗試從數據庫中替換一列名稱的名稱數組。 我是軌道上 Ruby 的新手,所以它可能很簡單。

這工作正常:

<% 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

student 應該是一個數組,但students students = player.first_name使它成為一個字符串。

我不知道這是否是你想要的,但以下應該有效:

<% students = @players.pluck(:first_name) %> # or @players.map(&:first_name)
<% teams = RoundRobinTournament.schedule(students) %>
<td><%= teams %></td>

如果.pluck擁有一個ActiveRecord::Relation.map如果它是一組Player對象,則使用@players

但是,該錯誤會准確地告訴您問題所在和位置。 你只需要注意。 會更早崩潰,但StringArray都響應.size

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM