簡體   English   中英

RoR App中錯誤的參數數量錯誤? 不確定為什么

[英]Wrong Number of Arguments Error in RoR App? Unsure why

所以我剛剛創建了一個遷移文件,遷移了它,並編寫了我的“Player”類。 我正在嘗試運行此代碼:

def get_most_recent_ladder
    @top_80 = Team.all
    # loop through all teams, add each player and their rating to the hash, sort by rating, limit to 200
    all_players = []

    @top_80.each do |team|
      url = "http://modules.ussquash.com/ssm/pages/leagues/Team_Information.asp?id=#{team.team_id}"
      doc = Nokogiri::HTML(open(url))
      player_names = doc.css('.table.table-bordered.table-striped.table-condensed')[1].css('tr td a').map(&:content)
      player_ratings = doc.css('.table.table-bordered.table-striped.table-condensed')[1].css('tr td:nth-child(4)').map(&:content)
      for i in (0..player_names.length-1)
        player = Player.create(player_names[i], player_ratings[i].to_f, team.name)
        all_players << player
      end
    end

    all_players = all_players.sort{|player1, player2| player1.rating <=> player2.rating}.reverse.first(200)
    #insert creation of ladder object with order
    @ladder = all_players
    render 'ladder'
  end

不幸的是,當我運行代碼時,Rails給了我一個“錯誤數量的參數(3代表0..2)。所以有一些東西:

1)這是我的Player類:

class Player < ActiveRecord::Base
  attr_accessible :name, :rating, :team
end

所以它應該需要3個參數來創建一個Player類的新實例。

2)我不知道它為什么顯示“0..2”而不是普通整數。

3)另外,我現在得到“Uninitialized Constant PagesController :: Player。

這是我正在使用的HAML布局:

#ladder
  %tr
    %th Player
    %th Rating
    %th Team
  %tr
    -@ladder.each do |player|
      %td player.name
      %td player.rating
      %td player.team

由於某種原因,它打印出我的標題,但然后逐字打印出“player.name”,“player.rating”,“player.team”,而不是每個玩家的實際名稱,評級和團隊......

思考?

很困惑所以任何幫助都會很棒!

謝謝,Mariogs

問題是你的create電話。 您需要提供參數作為哈希:

player = Player.create(:name => player_names[i], :rating => player_ratings[i].to_f, :team => team.name)

這是因為Rails無法知道你提供的3個參數應該匹配你的3個字段(你永遠不應該假設Rails會保持字段順序)。 通過提供具有特定鍵的哈希(例如:name:rating等),Rails可以將您的值與您的字段正確匹配。

如果要在.haml文件中顯示這些值,請在項目前使用=

%td= player.name
%td= player.rating
%td= player.team

暫無
暫無

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

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