1

seed.rb内で、1つのtitle-1.txtファイルからのテキストデータを4列に入力しています。

title  = File.read(File.join(Rails.root, '/features/support/titles/title-1.txt'))  

1.upto(4) do |i|
  PressRelease.create(
    :title => title
  )
end

各列に、さまざまなtxtファイル(title-1.txt、title-2.txt、...)のさまざまなコンテンツを入力したい

私はこれを作ることができることを知っています:

1.upto(4) do |i|
  PressRelease.create(
    :title => File.read(File.join(Rails.root, '/features/support/titles/title-' + "#{i}" +'.txt'))
  )
end  

簡単にするために、title変数を次のように変更してみました:(
タイトルに注意してください-"#{i}")

title  = File.read(File.join(Rails.root, '/features/support/titles/title-' + "#{i}" + '.txt'))

しかし、私はこのエラーを受け取ります:
main:Objectの未定義のローカル変数またはメソッド `i'

再利用可能で短い変数を作成して、反復で使用できるようにするためのヒントはありますか?

--更新 -
この投稿には完全な解決策はありません。@PaulFioravantiの回答から、コードを短縮する別の方法を入手しました。URLは、次のようにFile.openメソッドを使用せずに変数に格納する必要があります。

title_url  = '/features/support/titles/title-' + '%s' + '.txt'  

1.upto(4) do |i|
  PressRelease.create(
    :title => File.read(File.join(Rails.root, "#{title_url %i}"))
  )
end
4

1 に答える 1

1

このStackOverflowスレッドから得たこのソリューションはどうですか。ループ内で変数を短く保つことができ、変数を定義するときに番号付きファイルを定義する必要はありませんtitle

title  = File.read(File.join(Rails.root, '/features/support/titles/title-' + '%s' + '.txt'))
1.upto(4) do |i|
  PressRelease.create(
    :title => title % i
  )
end
于 2012-12-25T01:50:19.720 に答える