2

まだ私の最初の Rails プログラム (Ruby 2.0、Rails 4.0) をプラグインしています。メイン モデル「連絡先」には、「色」テーブルのフォームにドロップ ダウンが含まれている必要があります。Color モデルを追加し、html ドロップダウンを作成して、Color モデルをシードしようとしています (現在、ドロップダウンには空のメニューが表示されています)。2 つの配列から Seeds.rb に Color を入力しており、両方の配列が文字列値 (それぞれの Color 移行列と同じ値) でいっぱいであることを確認しました。配列値を Color テーブルに入れようとすると、適切な数のエントリが作成されます (私の配列はそれぞれ 140 要素のサイズです) が、すべてのエントリは両方の列で nil です。

以下は私のseeds.rbです

追加の総初心者の質問?コードを入力する代わりに、Linux マシンの Stackoverflow にコードを貼り付けるにはどうすればよいですか?

colors = Array.new
colors = File.readlines("db/seeds/colornames.csv").map! {|name| name.chomp}

hexes = Array.new
hexes = File.readlines("db/seeds/colorhexes.csv").map! {|hex| hex.chomp}

Color.delete_all #because I keep having to reseed
x = 0
colors.each do |color|
  Color.create!(:name => color, :hex => hexes[x])
  x+=1
end

そして contact.rb

class Contact < ActiveRecord::Base
  attr_accessible :first_name, :last_name, :email, :zip_code, :favorite_color, :color_id #I have brought in the right gem to use this older method
  belongs_to :color 

  #validation of fields other than :favorite_color in here. Nothing pertinent to this q

  #favorite color validation
  validates_presence_of :favorite_color

end

と color.rb

class Color < ActiveRecord::Base
  has_many :contacts
end
4

2 に答える 2

2

この gem を github.com/rails/protected_attributes にインストールしていますか? そうであれば、Rails 3 のように、この行をモデルに追加する必要があります。

attr_accessible :name, :hex
于 2013-10-13T15:33:37.977 に答える
1

コードを見て、あなたの問題が何であるかはわかりません。貧弱な人のデバッグをお勧めします-putsあなたの友達ですか

また、モデルコードを投稿できますか?

コードに加えることができるいくつかの ruby​​ish 変更

  • Array.new は ruby​​ コードではめったに見られ[]ません。代わりに使用してください。この場合、変数を初期化する必要はまったくありません。
  • map!この場合、電話する必要はありmapません。
  • Array (Enumerable) にはメソッドがeach_with_indexあり、x local を回避できます
  • Ruby 1.9 ハッシュ構文を使用する

colors = File.readlines("db/seeds/colornames.csv").map {|name| name.chomp}
hexes = File.readlines("db/seeds/colorhexes.csv").map {|hex| hex.chomp}

Color.delete_all # because I keep having to reseed

colors.each_with_index do |color, index|
  Color.create!(name: color, hex: hexes[index])
end

現在、いくつかのデバッグを行っています

colors = File.readlines("db/seeds/colornames.csv").map {|name| name.chomp}
hexes = File.readlines("db/seeds/colorhexes.csv").map {|hex| hex.chomp}

puts "Color Count: #{colors.length}"
puts "Hex Count: #{hexes.length}"

Color.delete_all # because I keep having to reseed

colors.each_with_index do |color, index|
  puts "#{color}: #{hexes[index}"
  Color.create!(name: color, hex: hexes[index])
end    

puts "Loaded: #{Color.count} colors"
于 2013-10-13T14:24:33.783 に答える